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