Zebediah Figura : ntdll: Fix the overflow check in read_changes_apc().
Alexandre Julliard
julliard at winehq.org
Mon Mar 23 15:47:09 CDT 2020
Module: wine
Branch: master
Commit: cd2e053237bc0dfb3e9ddc074426b3eefb124389
URL: https://source.winehq.org/git/wine.git/?a=commit;h=cd2e053237bc0dfb3e9ddc074426b3eefb124389
Author: Zebediah Figura <z.figura12 at gmail.com>
Date: Sun Mar 22 19:11:29 2020 -0500
ntdll: Fix the overflow check in read_changes_apc().
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ntdll/file.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index 5175e9d5ce..5b60c887e2 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -1768,16 +1768,17 @@ static NTSTATUS read_changes_apc( void *user, IO_STATUS_BLOCK *iosb, NTSTATUS st
while (size && left >= sizeof(*pfni))
{
+ DWORD len = (left - offsetof(FILE_NOTIFY_INFORMATION, FileName)) / sizeof(WCHAR);
+
/* convert to an NT style path */
for (i = 0; i < event->len; i++)
if (event->name[i] == '/') event->name[i] = '\\';
pfni->Action = event->action;
- pfni->FileNameLength = ntdll_umbstowcs( event->name, event->len, pfni->FileName,
- (left - offsetof(FILE_NOTIFY_INFORMATION, FileName)) / sizeof(WCHAR));
+ pfni->FileNameLength = ntdll_umbstowcs( event->name, event->len, pfni->FileName, len );
last_entry_offset = &pfni->NextEntryOffset;
- if (pfni->FileNameLength == -1 || pfni->FileNameLength == -2) break;
+ if (pfni->FileNameLength == len) break;
i = offsetof(FILE_NOTIFY_INFORMATION, FileName[pfni->FileNameLength]);
pfni->FileNameLength *= sizeof(WCHAR);
More information about the wine-cvs
mailing list