[NTFS]
authorTrevor Thompson <tmt256@email.vccs.edu>
Sun, 12 Jun 2016 04:02:52 +0000 (04:02 +0000)
committerThomas Faber <thomas.faber@reactos.org>
Sun, 10 Dec 2017 10:13:23 +0000 (11:13 +0100)
Add fixes to WriteAttribute():
-Remove erroneous check for end of run (before writing to the last run returned)
-Properly dereference RealLengthWritten pointer, as reported in CR-90

svn path=/branches/GSoC_2016/NTFS/; revision=71616

drivers/filesystems/ntfs/mft.c

index 43b38ef..1294264 100644 (file)
@@ -517,17 +517,6 @@ WriteAttribute(PDEVICE_EXTENSION Vcb,
         }
         else
             DataRunStartLCN = -1;
-
-        if (*DataRun == 0)
-        {
-            if (Length == 0)
-                return STATUS_SUCCESS;
-
-            // This code shouldn't execute, because we should have extended the allocation size
-            // or failed the request by now. It's just a sanity check.
-            DPRINT1("Encountered EOF before expected!\n");
-            return STATUS_END_OF_FILE;
-        }
     }
 
     // Do we have more data to write?
@@ -556,7 +545,7 @@ WriteAttribute(PDEVICE_EXTENSION Vcb,
 
         Length -= WriteLength;
         SourceBuffer += WriteLength;
-        RealLengthWritten += WriteLength;
+        *RealLengthWritten += WriteLength;
 
         // We finished this request, but there's still data in this data run. 
         if (Length == 0 && WriteLength != DataRunLength * Vcb->NtfsInfo.BytesPerCluster)