Alexandre Julliard : kernelbase: Add IsBadStringPtr() replacement functions.

Alexandre Julliard julliard at winehq.org
Tue Dec 10 15:58:49 CST 2019


Module: wine
Branch: master
Commit: 0235e5146529d3d7eb257b2b3e5cc36bc2c77dbd
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=0235e5146529d3d7eb257b2b3e5cc36bc2c77dbd

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Tue Dec 10 11:12:20 2019 +0100

kernelbase: Add IsBadStringPtr() replacement functions.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/kernelbase/memory.c | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/dlls/kernelbase/memory.c b/dlls/kernelbase/memory.c
index 465a57209b..83805ece45 100644
--- a/dlls/kernelbase/memory.c
+++ b/dlls/kernelbase/memory.c
@@ -390,6 +390,42 @@ BOOL WINAPI DECLSPEC_HOTPATCH WriteProcessMemory( HANDLE process, void *addr, co
 }
 
 
+/* IsBadStringPtrA replacement for kernelbase, to catch exception in debug traces. */
+BOOL WINAPI IsBadStringPtrA( LPCSTR str, UINT_PTR max )
+{
+    if (!str) return TRUE;
+    __TRY
+    {
+        volatile const char *p = str;
+        while (p != str + max) if (!*p++) break;
+    }
+    __EXCEPT_PAGE_FAULT
+    {
+        return TRUE;
+    }
+    __ENDTRY
+    return FALSE;
+}
+
+
+/* IsBadStringPtrW replacement for kernelbase, to catch exception in debug traces. */
+BOOL WINAPI IsBadStringPtrW( LPCWSTR str, UINT_PTR max )
+{
+    if (!str) return TRUE;
+    __TRY
+    {
+        volatile const WCHAR *p = str;
+        while (p != str + max) if (!*p++) break;
+    }
+    __EXCEPT_PAGE_FAULT
+    {
+        return TRUE;
+    }
+    __ENDTRY
+    return FALSE;
+}
+
+
 /***********************************************************************
  * Heap functions
  ***********************************************************************/




More information about the wine-cvs mailing list