]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Windows: AFSInitializeProcessCB failure stack exhaustion
authorJeffrey Altman <jaltman@your-file-system.com>
Wed, 2 May 2012 18:32:01 +0000 (14:32 -0400)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Fri, 4 May 2012 17:24:15 +0000 (10:24 -0700)
If AFSInitializeProcessCB() fails in AFSProcessCreate() it can
lead to a recursive loop of AFSValidateProcessEntry() ->
AFSProcessCreate() calls.  Only call AFSValidateProcessEntry()
if AFSInitializeProcessCB() succeeds.  On failure, log an error
to the trace log.

Change-Id: I67a65bed9a3193a5ce44eb01d30aed15fe9e469d
Reviewed-on: http://gerrit.openafs.org/7309
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
src/WINNT/afsrdr/kernel/fs/AFSProcessSupport.cpp

index 7268d5c072bbb8c3daa43518ef85f73b831f2569..1f77caf70d13bc72df563e25674b7e234ddf0d61 100644 (file)
@@ -126,13 +126,23 @@ AFSProcessCreate( IN HANDLE ParentId,
             pProcessCB->CreatingProcessId = (ULONGLONG)CreatingProcessId;
 
             pProcessCB->CreatingThreadId = (ULONGLONG)CreatingThreadId;
-        }
 
-        //
-        // Now assign the AuthGroup ACE
-        //
+            //
+            // Now assign the AuthGroup ACE
+            //
+
+            AFSValidateProcessEntry( ProcessId);
+        }
+        else
+        {
 
-        AFSValidateProcessEntry( ProcessId);
+            AFSDbgLogMsg( AFS_SUBSYSTEM_PROCESS_PROCESSING,
+                          AFS_TRACE_LEVEL_ERROR,
+                          "AFSProcessCreate Initialization failure for Parent %08lX Process %08lX %08lX\n",
+                          ParentId,
+                          ProcessId,
+                          PsGetCurrentThread());
+        }
 
         AFSReleaseResource( pDeviceExt->Specific.Control.ProcessTree.TreeLock);
     }