parent
30aa51ce0f
commit
2a52e33f65
@ -0,0 +1,52 @@
|
|||||||
|
commit c23d222e78727bbcb9ed2926c328aceb0d8a89e1
|
||||||
|
Author: Hans Leidekker <hans@codeweavers.com>
|
||||||
|
Date: Fri Apr 1 17:01:55 2011 +0200
|
||||||
|
|
||||||
|
msi: Fix parsing of empty an property followed by a non-empty property.
|
||||||
|
|
||||||
|
diff --git a/dlls/msi/action.c b/dlls/msi/action.c
|
||||||
|
index 79d12d6..366d897 100644
|
||||||
|
--- a/dlls/msi/action.c
|
||||||
|
+++ b/dlls/msi/action.c
|
||||||
|
@@ -231,6 +231,7 @@ static int parse_prop( const WCHAR *str, WCHAR *value, int *quotes )
|
||||||
|
if (!count) goto done;
|
||||||
|
in_quotes = 1;
|
||||||
|
ignore = 1;
|
||||||
|
+ len++;
|
||||||
|
break;
|
||||||
|
case '"':
|
||||||
|
state = state_quote;
|
||||||
|
@@ -258,6 +259,7 @@ static int parse_prop( const WCHAR *str, WCHAR *value, int *quotes )
|
||||||
|
state = state_whitespace;
|
||||||
|
if (!count) goto done;
|
||||||
|
in_quotes = 1;
|
||||||
|
+ len++;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (!count) in_quotes = 0;
|
||||||
|
@@ -276,8 +278,9 @@ static int parse_prop( const WCHAR *str, WCHAR *value, int *quotes )
|
||||||
|
break;
|
||||||
|
case ' ':
|
||||||
|
state = state_whitespace;
|
||||||
|
- if (!count) goto done;
|
||||||
|
+ if (!count || (count > 1 && !len)) goto done;
|
||||||
|
in_quotes = 1;
|
||||||
|
+ len++;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
state = state_token;
|
||||||
|
diff --git a/dlls/msi/tests/install.c b/dlls/msi/tests/install.c
|
||||||
|
index 1f5ab9c..d54f923 100644
|
||||||
|
--- a/dlls/msi/tests/install.c
|
||||||
|
+++ b/dlls/msi/tests/install.c
|
||||||
|
@@ -6346,6 +6346,10 @@ static void test_command_line_parsing(void)
|
||||||
|
r = MsiInstallProductA(msifile, cmd);
|
||||||
|
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
|
||||||
|
|
||||||
|
+ cmd = "Q=\"\" P=\"one\"";
|
||||||
|
+ r = MsiInstallProductA(msifile, cmd);
|
||||||
|
+ ok(r == ERROR_INSTALL_FAILURE, "Expected ERROR_INSTALL_FAILURE, got %u\n", r);
|
||||||
|
+
|
||||||
|
DeleteFile(msifile);
|
||||||
|
RemoveDirectory("msitest");
|
||||||
|
}
|
Loading…
Reference in new issue