mirror of
https://github.com/winfsp/winfsp.git
synced 2026-09-23 10:40:12 -05:00
sys: FspMupHandleIrp: correctly handle fsvol discovery with nested relative opens
This commit is contained in:
+7
-3
@@ -237,7 +237,8 @@ NTSTATUS FspMupHandleIrp(
|
|||||||
* A CREATE request with an empty file name indicates that the fsmup device
|
* A CREATE request with an empty file name indicates that the fsmup device
|
||||||
* is being opened. Check for this case and handle it.
|
* is being opened. Check for this case and handle it.
|
||||||
*/
|
*/
|
||||||
if (0 == FileObject->FileName.Length)
|
if (0 == FileObject->FileName.Length &&
|
||||||
|
0 == FileObject->RelatedFileObject)
|
||||||
{
|
{
|
||||||
Irp->IoStatus.Status = STATUS_SUCCESS;
|
Irp->IoStatus.Status = STATUS_SUCCESS;
|
||||||
Irp->IoStatus.Information = FILE_OPENED;
|
Irp->IoStatus.Information = FILE_OPENED;
|
||||||
@@ -250,8 +251,11 @@ NTSTATUS FspMupHandleIrp(
|
|||||||
* Every other CREATE request must be forwarded to the appropriate fsvol device.
|
* Every other CREATE request must be forwarded to the appropriate fsvol device.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
while (0 != FileObject->RelatedFileObject)
|
if (0 != FileObject->RelatedFileObject)
|
||||||
FileObject = FileObject->RelatedFileObject;
|
{
|
||||||
|
FsvolDeviceObject = FspMupGetFsvolDeviceObject(FileObject->RelatedFileObject);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
FspFsmupDeviceLockPrefixTable(FsmupDeviceObject);
|
FspFsmupDeviceLockPrefixTable(FsmupDeviceObject);
|
||||||
PrefixEntry = RtlFindUnicodePrefix(&FsmupDeviceExtension->PrefixTable,
|
PrefixEntry = RtlFindUnicodePrefix(&FsmupDeviceExtension->PrefixTable,
|
||||||
|
|||||||
Reference in New Issue
Block a user