Windows: improve afskfw error message output
authorJeffrey Altman <jaltman@your-file-system.com>
Tue, 26 Jul 2011 21:03:56 +0000 (17:03 -0400)
committerJeffrey Altman <jaltman@openafs.org>
Sat, 30 Jul 2011 02:15:07 +0000 (19:15 -0700)
Add KTC and PT error messages to those that can be
translated within afskfw.lib.  This improves the error
logging for afslogon.dll, afscreds.exe, and afssrvadm.exe

Change-Id: I62aa5f1249d4d1f2d64ed068be47a5832d97f85c
Reviewed-on: http://gerrit.openafs.org/5108
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>

src/WINNT/afsd/NTMakefile
src/WINNT/afsd/afskfw.c
src/WINNT/afssvrmgr/NTMakefile
src/WINNT/client_creds/NTMakefile

index 2976973..8e23f97 100644 (file)
@@ -266,12 +266,21 @@ $(LANAHELPERLIB): $(LANAHELPERLIB_OBJS)
 
 AFSKFWLIB = $(DESTDIR)\lib\afskfw.lib
 
-AFSKFWLIB_OBJS =\
-      $(OUT)\afskfw.obj
+PTERROBJS=$(OUT)\pterror.obj
+
+$(PTERROBJS): $(AFSROOT)\src\ptserver\pterror.c
+       $(C2OBJ) /Fo$@ $**
+
+KTCERROBJS=$(OUT)\ktc_errors.obj
+
+$(KTCERROBJS): $(AFSROOT)\src\auth\ktc_errors.c
+       $(C2OBJ) /Fo$@ $**
+
+AFSKFWLIB_OBJS = $(OUT)\afskfw.obj
 
 $(AFSKFWLIB_OBJS):
 
-$(AFSKFWLIB): $(AFSKFWLIB_OBJS)
+$(AFSKFWLIB): $(AFSKFWLIB_OBJS) $(PTERROBJS) $(KTCERROBJS)
       $(LIBARCH)
 
 ############################################################################
@@ -288,6 +297,9 @@ LOGON_DLLOBJS =\
 LOGON_DLLLIBS =\
     $(DESTDIR)\lib\afsauthent.lib \
     $(DESTDIR)\lib\libafsconf.lib \
+    $(DESTDIR)\lib\afs\afscom_err.lib \
+    $(DESTDIR)\lib\afs\afsutil.lib \
+    $(DESTDIR)\lib\afsroken.lib \
     $(LANAHELPERLIB) \
     $(AFSKFWLIB)
 
index 97f19eb..d5a8866 100644 (file)
@@ -68,6 +68,8 @@
 #include <osilog.h>
 #include <afs/ptserver.h>
 #include <afs/ptuser.h>
+#include <afs/auth.h>
+#include <afs/com_err.h>
 #include <rx/rxkad.h>
 #include <WINNT\afsreg.h>
 #include "cm.h"
@@ -482,6 +484,9 @@ KFW_initialize(void)
         }
         ReleaseMutex(hMutex);
         CloseHandle(hMutex);
+
+        initialize_KTC_error_table();
+        initialize_PT_error_table();
     }
 }
 
@@ -1530,15 +1535,20 @@ KFW_AFS_get_cred( char * username,
         free(cellconfig.linkedCell);
 
     if ( code && reasonP ) {
-        if (pkrb5_get_error_message) {
-            char *msg = pkrb5_get_error_message(ctx, code);
-            StringCbCopyN( reason, sizeof(reason),
-                           msg, sizeof(reason) - 1);
-            *reasonP = reason;
-            pkrb5_free_error_message(ctx, msg);
-        } else {
-            *reasonP = perror_message(code);
+        int freemsg = 0;
+        char *msg = (char *)afs_error_message(code);
+        if (strncmp(msg, "unknown", strlen(msg)) == 0) {
+            if (pkrb5_get_error_message) {
+                msg = pkrb5_get_error_message(ctx, code);
+                freemsg = 1;
+            } else
+                msg = (char *)perror_message(code);
         }
+        StringCbCopyN( reason, sizeof(reason),
+                       msg, sizeof(reason) - 1);
+        *reasonP = reason;
+        if (freemsg)
+            pkrb5_free_error_message(ctx, msg);
     }
     return(code);
 }
index 2aaf442..ed45e5b 100644 (file)
@@ -98,8 +98,11 @@ EXELIBS = \
        $(DESTDIR)\lib\libafsconf.lib \
         $(DESTDIR)\lib\afsrxkad.lib \
         $(DESTDIR)\lib\afskfw.lib \
+        $(DESTDIR)\lib\afs\afscom_err.lib \
        $(DESTDIR)\lib\afs\AfsClass.lib \
-       $(DESTDIR)\lib\afs\TaAfsAppLib.lib
+       $(DESTDIR)\lib\afs\TaAfsAppLib.lib \
+        $(DESTDIR)\lib\afs\afsutil.lib \
+       $(DESTDIR)\lib\afsroken.lib
 
 ############################################################################
 
index ff067c9..ca9ff93 100644 (file)
@@ -69,6 +69,7 @@ EXELIBS = \
        $(DESTDIR)\lib\libafsconf.lib \
        $(DESTDIR)\lib\afs\afsreg.lib \
         $(DESTDIR)\lib\afskfw.lib \
+        $(DESTDIR)\lib\afs\afscom_err.lib \
         $(DESTDIR)\lib\afs\afsutil.lib \
        $(DESTDIR)\lib\afsroken.lib