afslogon-20040720
authorJeffrey Altman <jaltman@mit.edu>
Wed, 21 Jul 2004 06:27:44 +0000 (06:27 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Wed, 21 Jul 2004 06:27:44 +0000 (06:27 +0000)
Do not release the AFS Tokens at logoff if the user's profile was loaded
from AFS.  In this case we must keep the AFS tokens because we have no
idea how long writing back the profile might take.

src/WINNT/afsd/NTMakefile
src/WINNT/afsd/afslogon.c
src/WINNT/afsd/smb.c

index 210c7a2..088162b 100644 (file)
@@ -218,6 +218,7 @@ LOGON_DLLLIBS =\
        $(DESTDIR)\lib\libafsconf.lib \
     $(DESTDIR)\lib\afsrxkad.lib \
     $(DESTDIR)\lib\afsdes.lib \
+    $(DESTDIR)\lib\lanahelper.lib \
     $(AFSKFWLIB)
 
 LOGON_DLLSDKLIBS =\
@@ -228,7 +229,8 @@ LOGON_DLLSDKLIBS =\
        oleaut32.lib \
        ole32.lib \
        adsiid.lib \
-       activeds.lib
+       activeds.lib \
+    userenv.lib
 
 $(LOGON_DLLFILE): $(LOGON_DLLOBJS) $(LOGON_DLLLIBS)
        $(DLLGUILINK) $(LOGONLINKFLAGS) -def:afslogon.def $(LOGON_DLLSDKLIBS)
index 2a7ee9e..709cf9d 100644 (file)
@@ -767,18 +767,33 @@ DWORD APIENTRY NPPasswordChangeNotify(
        return 0;
 }
 
+#include <userenv.h>
 #include <Winwlx.h>
+#include "lanahelper.h"
 
-VOID AFS_Logoff_Event( 
-    PWLX_NOTIFICATION_INFO pInfo )
+VOID AFS_Logoff_Event( PWLX_NOTIFICATION_INFO pInfo )
 {
     DWORD code;
-    if (code = ktc_ForgetAllTokens())
-        DebugEvent(NULL,"AFS AfsLogon - AFS_Logoff_Event - ForgetAllTokens failed [%lX]",code);
-    else
-        DebugEvent0("AFS AfsLogon - AFS_Logoff_Event - ForgetAllTokens succeeded");
+    TCHAR profileDir[256] = TEXT("");
+    TCHAR uncprefix[64] = TEXT("\\\\");
+    DWORD  len;
+
+    len = 256;
+    lana_GetNetbiosName(&uncprefix[2], LANA_NETBIOS_NAME_FULL);
+
+    if ( GetUserProfileDirectory(pInfo->hToken, profileDir, &len) ) {
+        if (_tcsnicmp(uncprefix, profileDir, _tcslen(uncprefix))) {
+            if (code = ktc_ForgetAllTokens())
+                DebugEvent(NULL,"AFS AfsLogon - AFS_Logoff_Event - ForgetAllTokens failed [%lX]",code);
+            else
+                DebugEvent0("AFS AfsLogon - AFS_Logoff_Event - ForgetAllTokens succeeded");
+        } else {
+            DebugEvent0("AFS AfsLogon - AFS_Logoff_Event - Tokens left in place; profile in AFS");
+        }
+    }
 }   
 
 
 
 
+
index b2dfbd7..1cd0645 100644 (file)
@@ -1272,7 +1272,9 @@ int smb_FindShare(smb_vc_t *vcp, smb_user_t *uidp, char *shareName,
        char *var;
        char temp[1024];
        DWORD sizeTemp;
+#ifdef DJGPP
     char sbmtpath[MAX_PATH];
+#endif
     char *p, *q;
        HKEY parmKey;
        DWORD code;