aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBob Arnson <bob@firegiant.com>2019-11-08 14:54:15 -0500
committerBob Arnson <bob@firegiant.com>2019-11-08 15:07:28 -0500
commite29c25090e26c8cca52232d580528840d1161b73 (patch)
tree8adc655455a219574318131d89501350a9364861 /src
parent8a7d727f1ab0dfef956db726d64985311291505e (diff)
downloadwix-e29c25090e26c8cca52232d580528840d1161b73.tar.gz
wix-e29c25090e26c8cca52232d580528840d1161b73.tar.bz2
wix-e29c25090e26c8cca52232d580528840d1161b73.zip
Ensure upgrade action properties are secure.
Diffstat (limited to 'src')
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Bind/CreateSpecialPropertiesCommand.cs4
-rw-r--r--src/WixToolset.Core/Compiler_2.cs3
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs21
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/TestData/ManualUpgrade/Package.wxs1
4 files changed, 21 insertions, 8 deletions
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/CreateSpecialPropertiesCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/CreateSpecialPropertiesCommand.cs
index 8f769904..0d165f80 100644
--- a/src/WixToolset.Core.WindowsInstaller/Bind/CreateSpecialPropertiesCommand.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Bind/CreateSpecialPropertiesCommand.cs
@@ -51,6 +51,10 @@ namespace WixToolset.Core.WindowsInstaller.Bind
51 .Select(ca => ca.Id.Id); 51 .Select(ca => ca.Id.Id);
52 hiddenProperties.UnionWith(hideTargetCustomActions); 52 hiddenProperties.UnionWith(hideTargetCustomActions);
53 53
54 // Ensure upgrade action properties are secure.
55 var actionProperties = this.Section.Tuples.OfType<UpgradeTuple>().Select(u => u.ActionProperty);
56 secureProperties.UnionWith(actionProperties);
57
54 if (0 < adminProperties.Count) 58 if (0 < adminProperties.Count)
55 { 59 {
56 var tuple = new PropertyTuple(null, new Identifier(AccessModifier.Private, "AdminProperties")); 60 var tuple = new PropertyTuple(null, new Identifier(AccessModifier.Private, "AdminProperties"));
diff --git a/src/WixToolset.Core/Compiler_2.cs b/src/WixToolset.Core/Compiler_2.cs
index 2f578e61..3e50a32d 100644
--- a/src/WixToolset.Core/Compiler_2.cs
+++ b/src/WixToolset.Core/Compiler_2.cs
@@ -4919,9 +4919,6 @@ namespace WixToolset.Core
4919 4919
4920 this.Core.AddTuple(tuple); 4920 this.Core.AddTuple(tuple);
4921 4921
4922 // Ensure the action property is secure.
4923 this.AddWixPropertyRow(sourceLineNumbers, new Identifier(AccessModifier.Private, actionProperty), false, true, false);
4924
4925 // Ensure that RemoveExistingProducts is authored in InstallExecuteSequence 4922 // Ensure that RemoveExistingProducts is authored in InstallExecuteSequence
4926 // if at least one row in Upgrade table lacks the OnlyDetect attribute. 4923 // if at least one row in Upgrade table lacks the OnlyDetect attribute.
4927 if (!onlyDetect) 4924 if (!onlyDetect)
diff --git a/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs b/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs
index 21b6e9ce..4d1e35f9 100644
--- a/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs
+++ b/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs
@@ -372,16 +372,27 @@ namespace WixToolsetTest.CoreIntegration
372 372
373 Assert.Equal(0, result); 373 Assert.Equal(0, result);
374 374
375 var pdbPath = Path.Combine(intermediateFolder, @"bin\test.wixpdb");
375 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); 376 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi")));
376 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); 377 Assert.True(File.Exists(pdbPath));
377 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\MsiPackage\test.txt"))); 378 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\MsiPackage\test.txt")));
378 379
379 var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb")); 380 var intermediate = Intermediate.Load(pdbPath);
380 var section = intermediate.Sections.Single(); 381 var section = intermediate.Sections.Single();
381 382
382 var fileTuple = section.Tuples.OfType<FileTuple>().Single(); 383 var upgradeTuple = section.Tuples.OfType<UpgradeTuple>().Single();
383 Assert.Equal(Path.Combine(folder, @"data\test.txt"), fileTuple[FileTupleFields.Source].AsPath().Path); 384 Assert.False(upgradeTuple.ExcludeLanguages);
384 Assert.Equal(@"test.txt", fileTuple[FileTupleFields.Source].PreviousValue.AsPath().Path); 385 Assert.True(upgradeTuple.IgnoreRemoveFailures);
386 Assert.False(upgradeTuple.VersionMaxInclusive);
387 Assert.True(upgradeTuple.VersionMinInclusive);
388 Assert.Equal("13.0.0", upgradeTuple.VersionMax);
389 Assert.Equal("12.0.0", upgradeTuple.VersionMin);
390 Assert.False(upgradeTuple.OnlyDetect);
391 Assert.Equal("BLAHBLAHBLAH", upgradeTuple.ActionProperty);
392
393 var pdb = WindowsInstallerData.Load(pdbPath, suppressVersionCheck: false);
394 var secureProperties = pdb.Tables["Property"].Rows.Where(row => row.GetKey() == "SecureCustomProperties").Single();
395 Assert.Contains("BLAHBLAHBLAH", secureProperties.FieldAsString(1));
385 } 396 }
386 } 397 }
387 398
diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/ManualUpgrade/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/ManualUpgrade/Package.wxs
index d674eb59..38125b57 100644
--- a/src/test/WixToolsetTest.CoreIntegration/TestData/ManualUpgrade/Package.wxs
+++ b/src/test/WixToolsetTest.CoreIntegration/TestData/ManualUpgrade/Package.wxs
@@ -6,6 +6,7 @@
6 <Upgrade Id="01120000-00E0-0000-0000-0000000FF1CE"> 6 <Upgrade Id="01120000-00E0-0000-0000-0000000FF1CE">
7 <UpgradeVersion ExcludeLanguages="no" IgnoreRemoveFailure="yes" IncludeMaximum="no" IncludeMinimum="yes" Maximum="13.0.0" Minimum="12.0.0" OnlyDetect="no" Property="BLAHBLAHBLAH" /> 7 <UpgradeVersion ExcludeLanguages="no" IgnoreRemoveFailure="yes" IncludeMaximum="no" IncludeMinimum="yes" Maximum="13.0.0" Minimum="12.0.0" OnlyDetect="no" Property="BLAHBLAHBLAH" />
8 </Upgrade> 8 </Upgrade>
9 <!--<Property Id="BLAHBLAHBLAH" Secure="yes" />-->
9 10
10 <InstallExecuteSequence> 11 <InstallExecuteSequence>
11 <RemoveExistingProducts After="InstallValidate" /> 12 <RemoveExistingProducts After="InstallValidate" />