Gijs Vermeulen : odbccp32: Handle NULL sizeout in SQLGetInstalledDrivers.

Alexandre Julliard julliard at winehq.org
Mon Nov 18 16:19:17 CST 2019


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

Author: Gijs Vermeulen <gijsvrm at codeweavers.com>
Date:   Sat Nov 16 17:08:44 2019 +0100

odbccp32: Handle NULL sizeout in SQLGetInstalledDrivers.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48111
Signed-off-by: Gijs Vermeulen <gijsvrm at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/odbccp32/odbccp32.c   | 3 ++-
 dlls/odbccp32/tests/misc.c | 5 +++++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/dlls/odbccp32/odbccp32.c b/dlls/odbccp32/odbccp32.c
index 1198b487f3..a09d6571f3 100644
--- a/dlls/odbccp32/odbccp32.c
+++ b/dlls/odbccp32/odbccp32.c
@@ -583,7 +583,8 @@ BOOL WINAPI SQLGetInstalledDrivers(char *buf, WORD size, WORD *sizeout)
         return FALSE;
     }
 
-    *sizeout = WideCharToMultiByte(CP_ACP, 0, wbuf, written, NULL, 0, NULL, NULL);
+    if (sizeout)
+        *sizeout = WideCharToMultiByte(CP_ACP, 0, wbuf, written, NULL, 0, NULL, NULL);
     WideCharToMultiByte(CP_ACP, 0, wbuf, written, buf, size, NULL, NULL);
 
     heap_free(wbuf);
diff --git a/dlls/odbccp32/tests/misc.c b/dlls/odbccp32/tests/misc.c
index dc2ca7ed3f..e2f48ee732 100644
--- a/dlls/odbccp32/tests/misc.c
+++ b/dlls/odbccp32/tests/misc.c
@@ -643,6 +643,11 @@ static void test_SQLGetInstalledDrivers(void)
     ok(!ret, "got %d\n", ret);
     check_error(ODBC_ERROR_INVALID_BUFF_LEN);
 
+    ret = SQLGetInstalledDrivers(buffer, 10, NULL);
+    ok(ret, "got %d\n", ret);
+    ok(strlen(buffer) == 8, "got len %u\n", lstrlenA(buffer));
+    ok(!buffer[9], "buffer not doubly null-terminated\n");
+
     ret = SQLGetInstalledDrivers(buffer, 10, &written);
     ok(ret, "got %d\n", ret);
     ok(strlen(buffer) == 8, "got len %u\n", lstrlenA(buffer));




More information about the wine-cvs mailing list