Windows: Support correct status codes from service
authorPeter Scott <pscott@kerneldrivers.com>
Fri, 30 Dec 2011 00:23:32 +0000 (17:23 -0700)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Sat, 31 Dec 2011 21:44:56 +0000 (13:44 -0800)
When performing object verification, check for status failures corresponding
to parent object issues which require a validation of the parent

Change-Id: I4a73b55961eda62079c933f9e85888ea24b39f1f
Reviewed-on: http://gerrit.openafs.org/6447
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

src/WINNT/afsrdr/kernel/lib/AFSCommSupport.cpp
src/WINNT/afsrdr/kernel/lib/AFSNameSupport.cpp
src/WINNT/afsrdr/kernel/lib/AFSNetworkProviderSupport.cpp
src/WINNT/afsrdr/kernel/lib/Include/AFSCommon.h

index b8ca97d..55224aa 100644 (file)
@@ -1848,7 +1848,7 @@ AFSEvaluateTargetByID( IN AFSObjectInfoCB *ObjectInfo,
             // verification
             //
 
-            if( ntStatus == STATUS_INVALID_HANDLE)
+            if( ntStatus == STATUS_OBJECT_PATH_INVALID)
             {
 
                 if( ObjectInfo->ParentObjectInformation != NULL)
@@ -1910,7 +1910,7 @@ try_exit:
 
 NTSTATUS
 AFSEvaluateTargetByName( IN GUID *AuthGroup,
-                         IN AFSFileID *ParentFileId,
+                         IN AFSObjectInfoCB *ParentObjectInfo,
                          IN PUNICODE_STRING SourceName,
                          OUT AFSDirEnumEntry **DirEnumEntry)
 {
@@ -1924,7 +1924,7 @@ AFSEvaluateTargetByName( IN GUID *AuthGroup,
     __Enter
     {
 
-        stTargetID.ParentId = *ParentFileId;
+        stTargetID.ParentId = ParentObjectInfo->FileId;
 
         //
         // Allocate our response buffer
@@ -1959,6 +1959,11 @@ AFSEvaluateTargetByName( IN GUID *AuthGroup,
         if( ntStatus != STATUS_SUCCESS)
         {
 
+            if( ntStatus == STATUS_OBJECT_PATH_INVALID)
+            {
+                SetFlag( ParentObjectInfo->Flags, AFS_OBJECT_FLAGS_VERIFY);
+            }
+
             try_return( ntStatus);
         }
 
index dff36d2..62447ac 100644 (file)
@@ -3581,7 +3581,6 @@ AFSCheckCellName( IN GUID *AuthGroup,
 
     NTSTATUS ntStatus = STATUS_SUCCESS;
     UNICODE_STRING uniName;
-    AFSFileID stFileID;
     AFSDirEnumEntry *pDirEnumEntry = NULL;
     AFSDeviceExt *pDevExt = (AFSDeviceExt *)AFSRDRDeviceObject->DeviceExtension;
     AFSDirHdr *pDirHdr = &AFSGlobalRoot->ObjectInformation.Specific.Directory.DirectoryNodeHdr;
@@ -3644,10 +3643,8 @@ AFSCheckCellName( IN GUID *AuthGroup,
         // OK, ask the CM about this component name
         //
 
-        stFileID = AFSGlobalRoot->ObjectInformation.FileId;
-
         ntStatus = AFSEvaluateTargetByName( AuthGroup,
-                                            &stFileID,
+                                            &AFSGlobalRoot->ObjectInformation,
                                             CellName,
                                             &pDirEnumEntry);
 
index 26d3a6c..7cec196 100644 (file)
@@ -1656,7 +1656,6 @@ AFSGetConnectionInfo( IN AFSNetworkProviderConnectionCB *ConnectCB,
         if( pConnection == NULL)
         {
             UNICODE_STRING uniFullName;
-            AFSFileID stFileID;
             AFSDirEnumEntry *pDirEnumEntry = NULL;
 
             AFSDbgLogMsg( AFS_SUBSYSTEM_NETWORK_PROVIDER,
@@ -1670,17 +1669,11 @@ AFSGetConnectionInfo( IN AFSNetworkProviderConnectionCB *ConnectCB,
             AFSReleaseResource( &pRDRDevExt->Specific.RDR.ProviderListLock);
 
             //
-            // Perform a case insensitive search
-            //
-
-            //
             // OK, ask the CM about this component name
             //
 
-            stFileID = AFSGlobalRoot->ObjectInformation.FileId;
-
             ntStatus = AFSEvaluateTargetByName( NULL,
-                                                &stFileID,
+                                                &AFSGlobalRoot->ObjectInformation,
                                                 &uniShareName,
                                                 &pDirEnumEntry);
 
index 380c983..adfd265 100644 (file)
@@ -209,7 +209,7 @@ AFSEvaluateTargetByID( IN AFSObjectInfoCB *ObjectInfo,
 
 NTSTATUS
 AFSEvaluateTargetByName( IN GUID *AuthGroup,
-                         IN AFSFileID *ParentFileId,
+                         IN AFSObjectInfoCB *ParentObjectInfo,
                          IN PUNICODE_STRING SourceName,
                          OUT AFSDirEnumEntry **DirEnumEntry);