James Hawkins : msi: Don' t crash if an empty record is given to MsiProcessMessage.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Aug 2 06:48:39 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: f10365bb5dd9a0994368dfd82834691db5250598
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=f10365bb5dd9a0994368dfd82834691db5250598

Author: James Hawkins <truiken at gmail.com>
Date:   Tue Aug  1 13:15:34 2006 -0700

msi: Don't crash if an empty record is given to MsiProcessMessage.

---

 dlls/msi/package.c      |    4 ++++
 dlls/msi/tests/format.c |   26 ++++++++++++++++++++++++++
 2 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/dlls/msi/package.c b/dlls/msi/package.c
index 53433d0..283b0a6 100644
--- a/dlls/msi/package.c
+++ b/dlls/msi/package.c
@@ -668,6 +668,10 @@ INT MSI_ProcessMessage( MSIPACKAGE *pack
 
         action = MSI_RecordGetString(record, 1);
         action_text = MSI_RecordGetString(record, 2);
+
+        if (!action || !action_text)
+            return IDOK;
+
         deformat_string(package, action_text, &deformatted);
 
         len = strlenW(timet) + strlenW(action) + strlenW(template_s);
diff --git a/dlls/msi/tests/format.c b/dlls/msi/tests/format.c
index 1ea9ee3..c7d4fc5 100644
--- a/dlls/msi/tests/format.c
+++ b/dlls/msi/tests/format.c
@@ -1360,9 +1360,35 @@ static void test_formatrecord_package(vo
     DeleteFile( filename );
 }
 
+static void test_processmessage(void)
+{
+    static const CHAR filename[] = "winetest.msi";
+    MSIHANDLE hrec;
+    MSIHANDLE package;
+    int r;
+
+    package = helper_createpackage( filename );
+    ok(package!=0, "Unable to create package\n");
+
+    hrec = MsiCreateRecord(3);
+    ok( hrec, "failed to create record\n");
+
+    r = MsiRecordSetString(hrec, 1, "");
+    ok( r == ERROR_SUCCESS, "set string failed\n");
+
+    r = MsiProcessMessage(package, INSTALLMESSAGE_ACTIONSTART, hrec);
+    ok( r == IDOK, "expected IDOK, got %i\n", r);
+
+    MsiCloseHandle(hrec);
+    MsiCloseHandle(package);
+
+    DeleteFile(filename);
+}
+
 START_TEST(format)
 {
     test_createpackage();
     test_formatrecord();
     test_formatrecord_package();
+    test_processmessage();
 }




More information about the wine-cvs mailing list