diff options
Diffstat (limited to 'src/ext/Util/wixext/UtilCompiler.cs')
-rw-r--r-- | src/ext/Util/wixext/UtilCompiler.cs | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/src/ext/Util/wixext/UtilCompiler.cs b/src/ext/Util/wixext/UtilCompiler.cs index 47f82ca6..96b2ee0a 100644 --- a/src/ext/Util/wixext/UtilCompiler.cs +++ b/src/ext/Util/wixext/UtilCompiler.cs | |||
@@ -1286,6 +1286,8 @@ namespace WixToolset.Util | |||
1286 | var bits = new BitArray(32); | 1286 | var bits = new BitArray(32); |
1287 | string user = null; | 1287 | string user = null; |
1288 | 1288 | ||
1289 | var validBitNames = new HashSet<string>(UtilConstants.StandardPermissions.Concat(UtilConstants.GenericPermissions).Concat(UtilConstants.FolderPermissions)); | ||
1290 | |||
1289 | foreach (var attrib in element.Attributes()) | 1291 | foreach (var attrib in element.Attributes()) |
1290 | { | 1292 | { |
1291 | if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace) | 1293 | if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace) |
@@ -1297,18 +1299,18 @@ namespace WixToolset.Util | |||
1297 | this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, UtilSymbolDefinitions.User, user); | 1299 | this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, UtilSymbolDefinitions.User, user); |
1298 | break; | 1300 | break; |
1299 | default: | 1301 | default: |
1300 | var attribValue = this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib); | 1302 | if (validBitNames.Contains(attrib.Name.LocalName)) |
1301 | if (!this.TrySetBitFromName(UtilConstants.StandardPermissions, attrib.Name.LocalName, attribValue, bits, 16)) | ||
1302 | { | 1303 | { |
1303 | if (!this.TrySetBitFromName(UtilConstants.GenericPermissions, attrib.Name.LocalName, attribValue, bits, 28)) | 1304 | var attribValue = this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib); |
1305 | if (this.TrySetBitFromName(UtilConstants.StandardPermissions, attrib.Name.LocalName, attribValue, bits, 16) || | ||
1306 | this.TrySetBitFromName(UtilConstants.GenericPermissions, attrib.Name.LocalName, attribValue, bits, 28) || | ||
1307 | this.TrySetBitFromName(UtilConstants.FolderPermissions, attrib.Name.LocalName, attribValue, bits, 0)) | ||
1304 | { | 1308 | { |
1305 | if (!this.TrySetBitFromName(UtilConstants.FolderPermissions, attrib.Name.LocalName, attribValue, bits, 0)) | 1309 | break; |
1306 | { | ||
1307 | this.ParseHelper.UnexpectedAttribute(element, attrib); | ||
1308 | break; | ||
1309 | } | ||
1310 | } | 1310 | } |
1311 | } | 1311 | } |
1312 | |||
1313 | this.ParseHelper.UnexpectedAttribute(element, attrib); | ||
1312 | break; | 1314 | break; |
1313 | } | 1315 | } |
1314 | } | 1316 | } |
@@ -2477,6 +2479,8 @@ namespace WixToolset.Util | |||
2477 | break; | 2479 | break; |
2478 | } | 2480 | } |
2479 | 2481 | ||
2482 | var validBitNames = new HashSet<string>(UtilConstants.StandardPermissions.Concat(UtilConstants.GenericPermissions).Concat(specialPermissions)); | ||
2483 | |||
2480 | foreach (var attrib in element.Attributes()) | 2484 | foreach (var attrib in element.Attributes()) |
2481 | { | 2485 | { |
2482 | if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace) | 2486 | if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace) |
@@ -2500,18 +2504,18 @@ namespace WixToolset.Util | |||
2500 | user = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); | 2504 | user = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); |
2501 | break; | 2505 | break; |
2502 | default: | 2506 | default: |
2503 | var attribValue = this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib); | 2507 | if (validBitNames.Contains(attrib.Name.LocalName)) |
2504 | if (!this.TrySetBitFromName(UtilConstants.StandardPermissions, attrib.Name.LocalName, attribValue, bits, 16)) | ||
2505 | { | 2508 | { |
2506 | if (!this.TrySetBitFromName(UtilConstants.GenericPermissions, attrib.Name.LocalName, attribValue, bits, 28)) | 2509 | var attribValue = this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib); |
2510 | if (this.TrySetBitFromName(UtilConstants.StandardPermissions, attrib.Name.LocalName, attribValue, bits, 16) || | ||
2511 | this.TrySetBitFromName(UtilConstants.GenericPermissions, attrib.Name.LocalName, attribValue, bits, 28) || | ||
2512 | this.TrySetBitFromName(specialPermissions, attrib.Name.LocalName, attribValue, bits, 0)) | ||
2507 | { | 2513 | { |
2508 | if (!this.TrySetBitFromName(specialPermissions, attrib.Name.LocalName, attribValue, bits, 0)) | 2514 | break; |
2509 | { | ||
2510 | this.ParseHelper.UnexpectedAttribute(element, attrib); | ||
2511 | break; | ||
2512 | } | ||
2513 | } | 2515 | } |
2514 | } | 2516 | } |
2517 | |||
2518 | this.ParseHelper.UnexpectedAttribute(element, attrib); | ||
2515 | break; | 2519 | break; |
2516 | } | 2520 | } |
2517 | } | 2521 | } |