From: Jeffrey Altman Date: Fri, 16 Dec 2011 16:43:32 +0000 (-0500) Subject: Windows: propagate directory enumeration failures X-Git-Tag: upstream/1.8.0_pre1^2~2934 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=b3e6db22a1755b7633b522dfe5cbb61949e06466;p=packages%2Fo%2Fopenafs.git Windows: propagate directory enumeration failures If a directory is enumerated with an AuthGroup that has no permissions, do not treat the enumeration as successful. Change-Id: I6a543a1b19b9d2e68ee2c99f67398ed94ad52896 Reviewed-on: http://gerrit.openafs.org/6344 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- diff --git a/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp b/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp index 4146ced5a..cd8dffd27 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp @@ -2898,10 +2898,16 @@ AFSVerifyEntry( IN GUID *AuthGroup, AFSAcquireExcl( pObjectInfo->Specific.Directory.DirectoryNodeHdr.TreeLock, TRUE); - AFSValidateDirectoryCache( pObjectInfo, - AuthGroup); + ntStatus = AFSValidateDirectoryCache( pObjectInfo, + AuthGroup); AFSReleaseResource( pObjectInfo->Specific.Directory.DirectoryNodeHdr.TreeLock); + + if ( !NT_SUCCESS( ntStatus)) + { + + try_return( ntStatus); + } } // @@ -3323,8 +3329,13 @@ AFSValidateDirectoryCache( IN AFSObjectInfoCB *ObjectInfo, // Reget the directory contents // - AFSVerifyDirectoryContent( ObjectInfo, - AuthGroup); + ntStatus = AFSVerifyDirectoryContent( ObjectInfo, + AuthGroup); + + if ( !NT_SUCCESS( ntStatus)) + { + try_return( ntStatus); + } // // Now start again and tear down any entries not valid @@ -3439,6 +3450,8 @@ AFSValidateDirectoryCache( IN AFSObjectInfoCB *ObjectInfo, } #endif +try_exit: + if( bAcquiredLock) {