From: Jeffrey Altman Date: Sun, 25 Nov 2012 23:13:53 +0000 (-0500) Subject: Windows: AFSDeleteObjectInfo not on volume roots X-Git-Tag: upstream/1.8.0_pre1^2~1769 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=71ef2663da36f50a7eabe6b70971714a8f5f5dd5;p=packages%2Fo%2Fopenafs.git Windows: AFSDeleteObjectInfo not on volume roots The VolumeCB embeds an ObjectInformationCB structure which must not be freed by calling AFSDeleteObjectInfo(). Add an assert in the checked build and return without destroying the object in the free build. Change-Id: I77c92fbe0d10252785f4796153d9d824ff074d4c Reviewed-on: http://gerrit.openafs.org/8520 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 94dddb5cc..26670a7df 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp @@ -6588,6 +6588,19 @@ AFSDeleteObjectInfo( IN AFSObjectInfoCB *ObjectInfo) BOOLEAN bAcquiredTreeLock = FALSE; LONG lCount; + if ( BooleanFlagOn( ObjectInfo->Flags, AFS_OBJECT_ROOT_VOLUME)) + { + + // + // AFSDeleteObjectInfo should never be called on the ObjectInformationCB + // embedded in the VolumeCB. + // + + ASSERT( TRUE); + + return; + } + if( !ExIsResourceAcquiredExclusiveLite( ObjectInfo->VolumeCB->ObjectInfoTree.TreeLock)) {