Module: wine Branch: refs/heads/master Commit: f10365bb5dd9a0994368dfd82834691db5250598 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=f10365bb5dd9a0994368dfd8...
Author: James Hawkins truiken@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(); }