From b452b0b30aff272ad78b22b0efec0179585236ad Mon Sep 17 00:00:00 2001 From: Gregor Schneider Date: Thu, 15 Oct 2009 19:12:37 +0000 Subject: [PATCH] [kernel32] IsBadStringPtrA/W: - Remove overflow failure case, this isn't checked for string validation - Adapt page check to let the full string be checked in case of overflow See issue #4861 for more details. svn path=/trunk/; revision=43487 --- reactos/dll/win32/kernel32/mem/isbad.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/reactos/dll/win32/kernel32/mem/isbad.c b/reactos/dll/win32/kernel32/mem/isbad.c index 62cf1708cb1..c1617cdb040 100644 --- a/reactos/dll/win32/kernel32/mem/isbad.c +++ b/reactos/dll/win32/kernel32/mem/isbad.c @@ -171,9 +171,6 @@ IsBadStringPtrW(IN LPCWSTR lpsz, /* Calculate the last page */ Last = (PWCHAR)((ULONG_PTR)lpsz + (ucchMax * 2) - 2); - /* Another quick failure case */ - if ((ULONG_PTR)Last < (ULONG_PTR)lpsz) return TRUE; - /* Enter SEH */ _SEH2_TRY { @@ -184,7 +181,7 @@ IsBadStringPtrW(IN LPCWSTR lpsz, { Char = *Current; Current++; - } while (Char && (Current <= Last)); + } while (Char && (Current != Last)); } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { @@ -217,9 +214,6 @@ IsBadStringPtrA(IN LPCSTR lpsz, /* Calculate the last page */ Last = (PCHAR)((ULONG_PTR)lpsz + ucchMax - 1); - /* Another quick failure case */ - if ((ULONG_PTR)Last < (ULONG_PTR)lpsz) return TRUE; - /* Enter SEH */ _SEH2_TRY { @@ -230,7 +224,7 @@ IsBadStringPtrA(IN LPCSTR lpsz, { Char = *Current; Current++; - } while (Char && (Current <= Last)); + } while (Char && (Current != Last)); } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {