diff options
| author | Rob Mensching <rob@firegiant.com> | 2026-01-21 01:15:13 -0800 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2026-01-21 01:15:13 -0800 |
| commit | 4ee546e472000293ba70983521ac91628a9259b7 (patch) | |
| tree | 9069dcfdeb9afad07f3efb72ffd8fb36aa77fe20 /src | |
| parent | 9a26c32398337aff57da6e92088b90314b81cf03 (diff) | |
| download | wix-4ee546e472000293ba70983521ac91628a9259b7.tar.gz wix-4ee546e472000293ba70983521ac91628a9259b7.tar.bz2 wix-4ee546e472000293ba70983521ac91628a9259b7.zip | |
Protect against NULL User/Group comment when removing commentrobmen/8941-null-comment
Fixes 8941 (hopefully)
Diffstat (limited to 'src')
| -rw-r--r-- | src/ext/Util/ca/scaexec.cpp | 22 | ||||
| -rw-r--r-- | src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionGroupTests.cs | 2 |
2 files changed, 15 insertions, 9 deletions
diff --git a/src/ext/Util/ca/scaexec.cpp b/src/ext/Util/ca/scaexec.cpp index ee3c164f..2baab86e 100644 --- a/src/ext/Util/ca/scaexec.cpp +++ b/src/ext/Util/ca/scaexec.cpp | |||
| @@ -764,6 +764,7 @@ extern "C" UINT __stdcall CreateUser( | |||
| 764 | WCA_CASCRIPT_HANDLE hRollbackScript = NULL; | 764 | WCA_CASCRIPT_HANDLE hRollbackScript = NULL; |
| 765 | int iOriginalAttributes = 0; | 765 | int iOriginalAttributes = 0; |
| 766 | int iRollbackAttributes = 0; | 766 | int iRollbackAttributes = 0; |
| 767 | LPCWSTR wzOriginalComment = NULL; | ||
| 767 | 768 | ||
| 768 | USER_INFO_1 userInfo1; | 769 | USER_INFO_1 userInfo1; |
| 769 | USER_INFO_1* pUserInfo1 = NULL; | 770 | USER_INFO_1* pUserInfo1 = NULL; |
| @@ -885,14 +886,16 @@ extern "C" UINT __stdcall CreateUser( | |||
| 885 | } | 886 | } |
| 886 | } | 887 | } |
| 887 | 888 | ||
| 888 | hr = WcaCaScriptWriteString(hRollbackScript, pUserInfo1->usri1_comment); | 889 | wzOriginalComment = pUserInfo1->usri1_comment; |
| 889 | ExitOnFailure(hr, "Failed to add rollback comment to rollback script."); | 890 | if (!wzOriginalComment || !*wzOriginalComment) |
| 890 | |||
| 891 | if (!pUserInfo1->usri1_comment || !*pUserInfo1->usri1_comment) | ||
| 892 | { | 891 | { |
| 893 | iRollbackAttributes |= SCAU_REMOVE_COMMENT; | 892 | iRollbackAttributes |= SCAU_REMOVE_COMMENT; |
| 893 | wzOriginalComment = L""; | ||
| 894 | } | 894 | } |
| 895 | 895 | ||
| 896 | hr = WcaCaScriptWriteString(hRollbackScript, wzOriginalComment); | ||
| 897 | ExitOnFailure(hr, "Failed to add rollback comment to rollback script."); | ||
| 898 | |||
| 896 | hr = WcaCaScriptWriteNumber(hRollbackScript, iRollbackAttributes); | 899 | hr = WcaCaScriptWriteNumber(hRollbackScript, iRollbackAttributes); |
| 897 | ExitOnFailure(hr, "Failed to add rollback attributes to rollback script."); | 900 | ExitOnFailure(hr, "Failed to add rollback attributes to rollback script."); |
| 898 | 901 | ||
| @@ -1247,6 +1250,7 @@ extern "C" UINT __stdcall CreateGroup( | |||
| 1247 | 1250 | ||
| 1248 | WCA_CASCRIPT_HANDLE hRollbackScript = NULL; | 1251 | WCA_CASCRIPT_HANDLE hRollbackScript = NULL; |
| 1249 | int iRollbackAttributes = 0; | 1252 | int iRollbackAttributes = 0; |
| 1253 | LPCWSTR wzOriginalComment = NULL; | ||
| 1250 | 1254 | ||
| 1251 | DWORD dw; | 1255 | DWORD dw; |
| 1252 | LPWSTR pwzServerName = NULL; | 1256 | LPWSTR pwzServerName = NULL; |
| @@ -1338,14 +1342,16 @@ extern "C" UINT __stdcall CreateGroup( | |||
| 1338 | 1342 | ||
| 1339 | iRollbackAttributes = 0; | 1343 | iRollbackAttributes = 0; |
| 1340 | 1344 | ||
| 1341 | hr = WcaCaScriptWriteString(hRollbackScript, pGroupInfo1->lgrpi1_comment); | 1345 | wzOriginalComment = pGroupInfo1->lgrpi1_comment; |
| 1342 | ExitOnFailure(hr, "Failed to add rollback comment to rollback script."); | 1346 | if (!wzOriginalComment || !*wzOriginalComment) |
| 1343 | |||
| 1344 | if (!pGroupInfo1->lgrpi1_comment || !*pGroupInfo1->lgrpi1_comment) | ||
| 1345 | { | 1347 | { |
| 1346 | iRollbackAttributes |= SCAG_REMOVE_COMMENT; | 1348 | iRollbackAttributes |= SCAG_REMOVE_COMMENT; |
| 1349 | wzOriginalComment = L""; | ||
| 1347 | } | 1350 | } |
| 1348 | 1351 | ||
| 1352 | hr = WcaCaScriptWriteString(hRollbackScript, wzOriginalComment); | ||
| 1353 | ExitOnFailure(hr, "Failed to add rollback comment to rollback script."); | ||
| 1354 | |||
| 1349 | hr = WcaCaScriptWriteNumber(hRollbackScript, iRollbackAttributes); | 1355 | hr = WcaCaScriptWriteNumber(hRollbackScript, iRollbackAttributes); |
| 1350 | ExitOnFailure(hr, "Failed to add rollback attributes to rollback script."); | 1356 | ExitOnFailure(hr, "Failed to add rollback attributes to rollback script."); |
| 1351 | 1357 | ||
diff --git a/src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionGroupTests.cs b/src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionGroupTests.cs index 4357d12d..abed83c6 100644 --- a/src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionGroupTests.cs +++ b/src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionGroupTests.cs | |||
| @@ -243,7 +243,7 @@ namespace WixToolsetTest.MsiE2E | |||
| 243 | } | 243 | } |
| 244 | 244 | ||
| 245 | // Verify that a comment can be changed for an existing group | 245 | // Verify that a comment can be changed for an existing group |
| 246 | [RuntimeFact(Skip = "wixtoolset/issues#8941 - This test fails intermittently in CI. Disabling until the root cause is fixed.")] | 246 | [RuntimeFact] |
| 247 | public void CanChangeCommentOfExistingNonDomainGroup() | 247 | public void CanChangeCommentOfExistingNonDomainGroup() |
| 248 | { | 248 | { |
| 249 | try | 249 | try |
