From f6180b9da6d2e89c9b8bbe62dc49f02f9ab6829a Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Sat, 9 Mar 2013 15:43:14 -0500 Subject: [PATCH] Windows: Fix directory to service null mask lookups The direct to service for non-wildcard lookups, commit b7ba97ad537bd0e9a241f052ddd1c3a50c74745b, introduced a bug when the search mask is left unspecified. Do not set bNonWildcardMatch to TRUE when the mask is NULL. Change-Id: I6c4846b443acc7e5e42d4e83e75ef383fc400db9 Reviewed-on: http://gerrit.openafs.org/9542 Tested-by: BuildBot Reviewed-by: Peter Scott Reviewed-by: Rod Widdowson Reviewed-by: Jeffrey Altman --- src/WINNT/afsrdr/kernel/lib/AFSDirControl.cpp | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/WINNT/afsrdr/kernel/lib/AFSDirControl.cpp b/src/WINNT/afsrdr/kernel/lib/AFSDirControl.cpp index c2354d02c..eda3fe5d5 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSDirControl.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSDirControl.cpp @@ -207,6 +207,7 @@ AFSQueryDirectory( IN PIRP Irp) if( bInitialQuery && BooleanFlagOn( pCcb->Flags, CCB_FLAG_DIRECTORY_QUERY_DIRECT_QUERY)) { + bInitialQuery = FALSE; } else if( bRestartScan) @@ -217,12 +218,19 @@ AFSQueryDirectory( IN PIRP Irp) ClearFlag( pCcb->Flags, CCB_FLAG_DIRECTORY_QUERY_DIRECT_QUERY); - if( !FsRtlDoesNameContainWildCards( &pCcb->MaskName)) + AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING, + AFS_TRACE_LEVEL_VERBOSE, + "AFSQueryDirectory Enumerating content for parent %wZ Mask %wZ Restart Query\n", + &pCcb->DirectoryCB->NameInformation.FileName, + &pCcb->MaskName); + + if( pCcb->MaskName.Length > 0 && + !FsRtlDoesNameContainWildCards( &pCcb->MaskName)) { if( RtlCompareUnicodeString( &AFSPIOCtlName, - &pCcb->MaskName, - TRUE) != 0) + &pCcb->MaskName, + TRUE) != 0) { bNonWildcardMatch = TRUE; } @@ -341,6 +349,12 @@ AFSQueryDirectory( IN PIRP Irp) else { + AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING, + AFS_TRACE_LEVEL_VERBOSE, + "AFSQueryDirectory FsRtlDoesNameContainWildCards == FALSE parent %wZ Mask %wZ\n", + &pCcb->DirectoryCB->NameInformation.FileName, + puniArgFileName); + RtlCopyMemory( pCcb->MaskName.Buffer, puniArgFileName->Buffer, pCcb->MaskName.Length); -- 2.39.5