From 71ef2663da36f50a7eabe6b70971714a8f5f5dd5 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Sun, 25 Nov 2012 18:13:53 -0500 Subject: [PATCH] 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 --- src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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)) { -- 2.39.5