[NTOSKRNL] Properly copy backtracking buffer content on realloc

CORE-15902
This commit is contained in:
Bartosz Brachaczek 2019-03-31 11:42:56 +02:00 committed by Pierre Schweitzer
parent 21d2c70bb4
commit 8bc9935fcb
No known key found for this signature in database
GPG key ID: 7545556C3D585B0B
2 changed files with 22 additions and 22 deletions

View file

@ -305,21 +305,21 @@ FsRtlIsDbcsInExpression(IN PANSI_STRING Expression,
goto Exit;
}
/* Backtracking is at the start of the buffer */
BackTracking = AllocatedBuffer;
/* Copy BackTrackingBuffer content */
RtlCopyMemory(BackTracking,
BackTrackingBuffer,
/* Copy BackTracking content. Note that it can point to either BackTrackingBuffer or OldBackTrackingBuffer */
RtlCopyMemory(AllocatedBuffer,
BackTracking,
RTL_NUMBER_OF(BackTrackingBuffer) * sizeof(USHORT));
/* OldBackTracking is after BackTracking */
OldBackTracking = &BackTracking[BackTrackingBufferSize];
/* Place current Backtracking is at the start of the new buffer */
BackTracking = AllocatedBuffer;
/* Copy OldBackTrackingBuffer content */
RtlCopyMemory(OldBackTracking,
OldBackTrackingBuffer,
/* Copy OldBackTracking content */
RtlCopyMemory(&BackTracking[BackTrackingBufferSize],
OldBackTracking,
RTL_NUMBER_OF(OldBackTrackingBuffer) * sizeof(USHORT));
/* Place current OldBackTracking after current BackTracking in the buffer */
OldBackTracking = &BackTracking[BackTrackingBufferSize];
}
/* If lead byte present */

View file

@ -157,21 +157,21 @@ FsRtlIsNameInExpressionPrivate(IN PUNICODE_STRING Expression,
goto Exit;
}
/* Backtracking is at the start of the buffer */
BackTracking = AllocatedBuffer;
/* Copy BackTrackingBuffer content */
RtlCopyMemory(BackTracking,
BackTrackingBuffer,
/* Copy BackTracking content. Note that it can point to either BackTrackingBuffer or OldBackTrackingBuffer */
RtlCopyMemory(AllocatedBuffer,
BackTracking,
RTL_NUMBER_OF(BackTrackingBuffer) * sizeof(USHORT));
/* OldBackTracking is after BackTracking */
OldBackTracking = &BackTracking[BackTrackingBufferSize];
/* Place current Backtracking is at the start of the new buffer */
BackTracking = AllocatedBuffer;
/* Copy OldBackTrackingBuffer content */
RtlCopyMemory(OldBackTracking,
OldBackTrackingBuffer,
/* Copy OldBackTracking content */
RtlCopyMemory(&BackTracking[BackTrackingBufferSize],
OldBackTracking,
RTL_NUMBER_OF(OldBackTrackingBuffer) * sizeof(USHORT));
/* Place current OldBackTracking after current BackTracking in the buffer */
OldBackTracking = &BackTracking[BackTrackingBufferSize];
}
/* Basic check to test if chars are equal */