[FASTFAT]
authorPierre Schweitzer <pierre@reactos.org>
Wed, 23 Nov 2016 18:21:03 +0000 (18:21 +0000)
committerPierre Schweitzer <pierre@reactos.org>
Wed, 23 Nov 2016 18:21:03 +0000 (18:21 +0000)
In IRP_MJ_QUERY_INFORMATION/IRP_MJ_SET_INFORMATION, handle the case when we receive buggy FO without FCB.
This fixes bugchecks when using FileSpy.

CORE-12448

svn path=/trunk/; revision=73362

reactos/drivers/filesystems/fastfat/finfo.c

index f6f342d..b2c4a97 100644 (file)
@@ -1444,6 +1444,12 @@ VfatQueryInformation(
     DPRINT("VfatQueryInformation is called for '%s'\n",
            FileInformationClass >= FileMaximumInformation - 1 ? "????" : FileInformationClassNames[FileInformationClass]);
 
+    if (FCB == NULL)
+    {
+        DPRINT1("IRP_MJ_QUERY_INFORMATION without FCB!\n");
+        IrpContext->Irp->IoStatus.Information = 0;
+        return STATUS_INVALID_PARAMETER;
+    }
 
     SystemBuffer = IrpContext->Irp->AssociatedIrp.SystemBuffer;
     BufferLength = IrpContext->Stack->Parameters.QueryFile.Length;
@@ -1569,6 +1575,13 @@ VfatSetInformation(
     DPRINT("FileInformationClass %d\n", FileInformationClass);
     DPRINT("SystemBuffer %p\n", SystemBuffer);
 
+    if (FCB == NULL)
+    {
+        DPRINT1("IRP_MJ_SET_INFORMATION without FCB!\n");
+        IrpContext->Irp->IoStatus.Information = 0;
+        return STATUS_INVALID_PARAMETER;
+    }
+
     /* Special: We should call MmCanFileBeTruncated here to determine if changing
        the file size would be allowed.  If not, we bail with the right error.
        We must do this before acquiring the lock. */