Windows: AFSInitializeProcessCB failure stack exhaustion

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>
This commit is contained in:
Jeffrey Altman 2012-05-02 14:32:01 -04:00 committed by Jeffrey Altman
parent ad5916d19f
commit 2246e7887c

View File

@ -126,13 +126,23 @@ AFSProcessCreate( IN HANDLE ParentId,
pProcessCB->CreatingProcessId = (ULONGLONG)CreatingProcessId;
pProcessCB->CreatingThreadId = (ULONGLONG)CreatingThreadId;
//
// Now assign the AuthGroup ACE
//
AFSValidateProcessEntry( ProcessId);
}
else
{
//
// Now assign the AuthGroup ACE
//
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);
}