Nikolay Sivov : ole32: Check source pointer in StringFromGUID2.

Alexandre Julliard julliard at winehq.org
Tue Oct 6 10:35:48 CDT 2009


Module: wine
Branch: master
Commit: 5b723235d8302469f86f585a44fe336d5df6bdf6
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=5b723235d8302469f86f585a44fe336d5df6bdf6

Author: Nikolay Sivov <bunglehead at gmail.com>
Date:   Mon Oct  5 23:06:22 2009 +0400

ole32: Check source pointer in StringFromGUID2.

---

 dlls/ole32/compobj.c       |    2 +-
 dlls/ole32/tests/compobj.c |    7 +++++++
 2 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/dlls/ole32/compobj.c b/dlls/ole32/compobj.c
index b2013cf..c8c4808 100644
--- a/dlls/ole32/compobj.c
+++ b/dlls/ole32/compobj.c
@@ -1621,7 +1621,7 @@ INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
                                      '%','0','4','X','-','%','0','2','X','%','0','2','X','-',
                                      '%','0','2','X','%','0','2','X','%','0','2','X','%','0','2','X',
                                      '%','0','2','X','%','0','2','X','}',0 };
-    if (cmax < CHARS_IN_GUID) return 0;
+    if (!id || cmax < CHARS_IN_GUID) return 0;
     sprintfW( str, formatW, id->Data1, id->Data2, id->Data3,
               id->Data4[0], id->Data4[1], id->Data4[2], id->Data4[3],
               id->Data4[4], id->Data4[5], id->Data4[6], id->Data4[7] );
diff --git a/dlls/ole32/tests/compobj.c b/dlls/ole32/tests/compobj.c
index 1cfe86b..442e7b0 100644
--- a/dlls/ole32/tests/compobj.c
+++ b/dlls/ole32/tests/compobj.c
@@ -203,6 +203,13 @@ static void test_StringFromGUID2(void)
 {
   WCHAR str[50];
   int len;
+
+  /* invalid pointer */
+  SetLastError(0xdeadbeef);
+  len = StringFromGUID2(NULL,str,50);
+  ok(len == 0, "len: %d (expected 0)\n", len);
+  ok(GetLastError() == 0xdeadbeef, "Expected 0xdeadbeef, got %x\n", GetLastError());
+
   /* Test corner cases for buffer size */
   len = StringFromGUID2(&CLSID_StdFont,str,50);
   ok(len == 39, "len: %d (expected 39)\n", len);




More information about the wine-cvs mailing list