Bruno Jesus : ole32: Make sure StgIsStorageILockBytes tests real data.

Alexandre Julliard julliard at winehq.org
Mon Apr 16 13:35:46 CDT 2012


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

Author: Bruno Jesus <00cpxxx at gmail.com>
Date:   Sun Apr 15 05:07:11 2012 -0300

ole32: Make sure StgIsStorageILockBytes tests real data.

---

 dlls/ole32/storage32.c       |    7 ++++---
 dlls/ole32/tests/storage32.c |    6 ++++++
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/dlls/ole32/storage32.c b/dlls/ole32/storage32.c
index f279ee5..f233b61 100644
--- a/dlls/ole32/storage32.c
+++ b/dlls/ole32/storage32.c
@@ -7846,15 +7846,16 @@ HRESULT WINAPI StgSetTimes(OLECHAR const *str, FILETIME const *pctime,
  */
 HRESULT WINAPI StgIsStorageILockBytes(ILockBytes *plkbyt)
 {
-  BYTE sig[8];
+  BYTE sig[sizeof(STORAGE_magic)];
   ULARGE_INTEGER offset;
+  ULONG read = 0;
 
   offset.u.HighPart = 0;
   offset.u.LowPart  = 0;
 
-  ILockBytes_ReadAt(plkbyt, offset, sig, sizeof(sig), NULL);
+  ILockBytes_ReadAt(plkbyt, offset, sig, sizeof(sig), &read);
 
-  if (memcmp(sig, STORAGE_magic, sizeof(STORAGE_magic)) == 0)
+  if (read == sizeof(sig) && memcmp(sig, STORAGE_magic, sizeof(sig)) == 0)
     return S_OK;
 
   return S_FALSE;
diff --git a/dlls/ole32/tests/storage32.c b/dlls/ole32/tests/storage32.c
index b465269..bc0cc25 100644
--- a/dlls/ole32/tests/storage32.c
+++ b/dlls/ole32/tests/storage32.c
@@ -66,6 +66,9 @@ static void test_hglobal_storage_stat(void)
     r = CreateILockBytesOnHGlobal( NULL, TRUE, &ilb );
     ok( r == S_OK, "CreateILockBytesOnHGlobal failed\n");
 
+    r = StgIsStorageILockBytes( ilb );
+    ok( r == S_FALSE, "StgIsStorageILockBytes should have failed\n");
+
     mode = STGM_CREATE|STGM_SHARE_EXCLUSIVE|STGM_READWRITE;/*0x1012*/
     r = StgCreateDocfileOnILockBytes( ilb, mode, 0,  &stg );
     ok( r == S_OK, "StgCreateDocfileOnILockBytes failed\n");
@@ -73,6 +76,9 @@ static void test_hglobal_storage_stat(void)
     r = WriteClassStg( stg, &test_stg_cls );
     ok( r == S_OK, "WriteClassStg failed\n");
 
+    r = StgIsStorageILockBytes( ilb );
+    ok( r == S_OK, "StgIsStorageILockBytes failed\n");
+
     memset( &stat, 0, sizeof stat );
     r = IStorage_Stat( stg, &stat, 0 );
 




More information about the wine-cvs mailing list