Skip to content

Commit 661caa0

Browse files
nga888aokblast
authored andcommitted
[LLD][COFF] Fix manifest UAC trustInfo namespace (llvm#165285)
Fix manifest `trustInfo` to use the `urn:schemas-microsoft-com:asm.v3` namespace. Fixes llvm#120394.
1 parent 003555a commit 661caa0

File tree

5 files changed

+96
-50
lines changed

5 files changed

+96
-50
lines changed

lld/COFF/DriverUtils.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -440,7 +440,7 @@ std::string LinkerDriver::createDefaultXml() {
440440
<< "<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\"\n"
441441
<< " manifestVersion=\"1.0\">\n";
442442
if (ctx.config.manifestUAC) {
443-
os << " <trustInfo>\n"
443+
os << " <trustInfo xmlns=\"urn:schemas-microsoft-com:asm.v3\">\n"
444444
<< " <security>\n"
445445
<< " <requestedPrivileges>\n"
446446
<< " <requestedExecutionLevel level=" << ctx.config.manifestLevel
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
2+
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
3+
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
4+
<security>
5+
<requestedPrivileges>
6+
<requestedExecutionLevel level='asInvoker'
7+
uiAccess='false'/>
8+
</requestedPrivileges>
9+
</security>
10+
</trustInfo>
11+
</assembly>

lld/test/COFF/manifest-uac.test

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# REQUIRES: libxml2
2+
3+
# RUN: yaml2obj %p/Inputs/ret42.yaml -o %t.obj
4+
# RUN: lld-link /out:%t.exe /entry:main \
5+
# RUN: /manifest:embed \
6+
# RUN: /manifestinput:%p/Inputs/manifest-uac.test %t.obj
7+
# RUN: llvm-readobj --coff-resources %t.exe | FileCheck %s
8+
9+
CHECK: Data (
10+
CHECK-NEXT: 0000: 3C3F786D 6C207665 7273696F 6E3D2231 |<?xml version="1|
11+
CHECK-NEXT: 0010: 2E302220 656E636F 64696E67 3D225554 |.0" encoding="UT|
12+
CHECK-NEXT: 0020: 462D3822 3F3E0A3C 61737365 6D626C79 |F-8"?>.<assembly|
13+
CHECK-NEXT: 0030: 20786D6C 6E733D22 75726E3A 73636865 | xmlns="urn:sche|
14+
CHECK-NEXT: 0040: 6D61732D 6D696372 6F736F66 742D636F |mas-microsoft-co|
15+
CHECK-NEXT: 0050: 6D3A6173 6D2E7631 22206D61 6E696665 |m:asm.v1" manife|
16+
CHECK-NEXT: 0060: 73745665 7273696F 6E3D2231 2E30223E |stVersion="1.0">|
17+
CHECK-NEXT: 0070: 0A20203C 74727573 74496E66 6F20786D |. <trustInfo xm|
18+
CHECK-NEXT: 0080: 6C6E733D 2275726E 3A736368 656D6173 |lns="urn:schemas|
19+
CHECK-NEXT: 0090: 2D6D6963 726F736F 66742D63 6F6D3A61 |-microsoft-com:a|
20+
CHECK-NEXT: 00A0: 736D2E76 33223E0A 20202020 3C736563 |sm.v3">. <sec|
21+
CHECK-NEXT: 00B0: 75726974 793E0A20 20202020 203C7265 |urity>. <re|
22+
CHECK-NEXT: 00C0: 71756573 74656450 72697669 6C656765 |questedPrivilege|
23+
CHECK-NEXT: 00D0: 733E0A20 20202020 2020203C 72657175 |s>. <requ|
24+
CHECK-NEXT: 00E0: 65737465 64457865 63757469 6F6E4C65 |estedExecutionLe|
25+
CHECK-NEXT: 00F0: 76656C20 6C657665 6C3D2261 73496E76 |vel level="asInv|
26+
CHECK-NEXT: 0100: 6F6B6572 22207569 41636365 73733D22 |oker" uiAccess="|
27+
CHECK-NEXT: 0110: 66616C73 65222F3E 0A202020 2020203C |false"/>. <|
28+
CHECK-NEXT: 0120: 2F726571 75657374 65645072 6976696C |/requestedPrivil|
29+
CHECK-NEXT: 0130: 65676573 3E0A2020 20203C2F 73656375 |eges>. </secu|
30+
CHECK-NEXT: 0140: 72697479 3E0A2020 3C2F7472 75737449 |rity>. </trustI|
31+
CHECK-NEXT: 0150: 6E666F3E 0A3C2F61 7373656D 626C793E |nfo>.</assembly>|
32+
CHECK-NEXT: 0160: 0A |.|
33+
CHECK-NEXT: )

lld/test/COFF/manifest.test

Lines changed: 34 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
MANIFEST: <?xml version="1.0" standalone="yes"?>
1111
MANIFEST: <assembly xmlns="urn:schemas-microsoft-com:asm.v1"
1212
MANIFEST: manifestVersion="1.0">
13-
MANIFEST: <trustInfo>
13+
MANIFEST: <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
1414
MANIFEST: <security>
1515
MANIFEST: <requestedPrivileges>
1616
MANIFEST: <requestedExecutionLevel level='asInvoker' uiAccess='false'/>
@@ -26,7 +26,7 @@ MANIFEST: </assembly>
2626
UAC: <?xml version="1.0" standalone="yes"?>
2727
UAC: <assembly xmlns="urn:schemas-microsoft-com:asm.v1"
2828
UAC: manifestVersion="1.0">
29-
UAC: <trustInfo>
29+
UAC: <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
3030
UAC: <security>
3131
UAC: <requestedPrivileges>
3232
UAC: <requestedExecutionLevel level='requireAdministrator' uiAccess='true'/>
@@ -43,7 +43,7 @@ UAC: </assembly>
4343
DEPENDENCY: <?xml version="1.0" standalone="yes"?>
4444
DEPENDENCY: <assembly xmlns="urn:schemas-microsoft-com:asm.v1"
4545
DEPENDENCY: manifestVersion="1.0">
46-
DEPENDENCY: <trustInfo>
46+
DEPENDENCY: <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
4747
DEPENDENCY: <security>
4848
DEPENDENCY: <requestedPrivileges>
4949
DEPENDENCY: <requestedExecutionLevel level='asInvoker' uiAccess='false'/>
@@ -90,7 +90,7 @@ NOUACNODEP: </assembly>
9090
SEVERALDEPS: <?xml version="1.0" standalone="yes"?>
9191
SEVERALDEPS: <assembly xmlns="urn:schemas-microsoft-com:asm.v1"
9292
SEVERALDEPS: manifestVersion="1.0">
93-
SEVERALDEPS: <trustInfo>
93+
SEVERALDEPS: <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
9494
SEVERALDEPS: <security>
9595
SEVERALDEPS: <requestedPrivileges>
9696
SEVERALDEPS: <requestedExecutionLevel level='asInvoker' uiAccess='false'/>
@@ -139,31 +139,34 @@ EMBED: 0040: 6D61732D 6D696372 6F736F66 742D636F |mas-microsoft-co|
139139
EMBED: 0050: 6D3A6173 6D2E7631 220A2020 20202020 |m:asm.v1". |
140140
EMBED: 0060: 20202020 6D616E69 66657374 56657273 | manifestVers|
141141
EMBED: 0070: 696F6E3D 22312E30 223E0A20 203C7472 |ion="1.0">. <tr|
142-
EMBED: 0080: 75737449 6E666F3E 0A202020 203C7365 |ustInfo>. <se|
143-
EMBED: 0090: 63757269 74793E0A 20202020 20203C72 |curity>. <r|
144-
EMBED: 00A0: 65717565 73746564 50726976 696C6567 |equestedPrivileg|
145-
EMBED: 00B0: 65733E0A 20202020 20202020 203C7265 |es>. <re|
146-
EMBED: 00C0: 71756573 74656445 78656375 74696F6E |questedExecution|
147-
EMBED: 00D0: 4C657665 6C206C65 76656C3D 27617349 |Level level='asI|
148-
EMBED: 00E0: 6E766F6B 65722720 75694163 63657373 |nvoker' uiAccess|
149-
EMBED: 00F0: 3D276661 6C736527 2F3E0A20 20202020 |='false'/>. |
150-
EMBED: 0100: 203C2F72 65717565 73746564 50726976 | </requestedPriv|
151-
EMBED: 0110: 696C6567 65733E0A 20202020 3C2F7365 |ileges>. </se|
152-
EMBED: 0120: 63757269 74793E0A 20203C2F 74727573 |curity>. </trus|
153-
EMBED: 0130: 74496E66 6F3E0A20 203C6465 70656E64 |tInfo>. <depend|
154-
EMBED: 0140: 656E6379 3E0A2020 20203C64 6570656E |ency>. <depen|
155-
EMBED: 0150: 64656E74 41737365 6D626C79 3E0A2020 |dentAssembly>. |
156-
EMBED: 0160: 20202020 3C617373 656D626C 79496465 | <assemblyIde|
157-
EMBED: 0170: 6E746974 7920666F 6F3D2762 61722720 |ntity foo='bar' |
158-
EMBED: 0180: 2F3E0A20 2020203C 2F646570 656E6465 |/>. </depende|
159-
EMBED: 0190: 6E744173 73656D62 6C793E0A 20203C2F |ntAssembly>. </|
160-
EMBED: 01A0: 64657065 6E64656E 63793E0A 20203C64 |dependency>. <d|
161-
EMBED: 01B0: 6570656E 64656E63 793E0A20 2020203C |ependency>. <|
162-
EMBED: 01C0: 64657065 6E64656E 74417373 656D626C |dependentAssembl|
163-
EMBED: 01D0: 793E0A20 20202020 203C6173 73656D62 |y>. <assemb|
164-
EMBED: 01E0: 6C794964 656E7469 74792062 617A3D27 |lyIdentity baz='|
165-
EMBED: 01F0: 71757578 27202F3E 0A202020 203C2F64 |quux' />. </d|
166-
EMBED: 0200: 6570656E 64656E74 41737365 6D626C79 |ependentAssembly|
167-
EMBED: 0210: 3E0A2020 3C2F6465 70656E64 656E6379 |>. </dependency|
168-
EMBED: 0220: 3E0A3C2F 61737365 6D626C79 3E0A |>.</assembly>.|
142+
EMBED: 0080: 75737449 6E666F20 786D6C6E 733D2275 |ustInfo xmlns="u|
143+
EMBED: 0090: 726E3A73 6368656D 61732D6D 6963726F |rn:schemas-micro|
144+
EMBED: 00A0: 736F6674 2D636F6D 3A61736D 2E763322 |soft-com:asm.v3"|
145+
EMBED: 00B0: 3E0A2020 20203C73 65637572 6974793E |>. <security>|
146+
EMBED: 00C0: 0A202020 2020203C 72657175 65737465 |. <requeste|
147+
EMBED: 00D0: 64507269 76696C65 6765733E 0A202020 |dPrivileges>. |
148+
EMBED: 00E0: 20202020 20203C72 65717565 73746564 | <requested|
149+
EMBED: 00F0: 45786563 7574696F 6E4C6576 656C206C |ExecutionLevel l|
150+
EMBED: 0100: 6576656C 3D276173 496E766F 6B657227 |evel='asInvoker'|
151+
EMBED: 0110: 20756941 63636573 733D2766 616C7365 | uiAccess='false|
152+
EMBED: 0120: 272F3E0A 20202020 20203C2F 72657175 |'/>. </requ|
153+
EMBED: 0130: 65737465 64507269 76696C65 6765733E |estedPrivileges>|
154+
EMBED: 0140: 0A202020 203C2F73 65637572 6974793E |. </security>|
155+
EMBED: 0150: 0A20203C 2F747275 7374496E 666F3E0A |. </trustInfo>.|
156+
EMBED: 0160: 20203C64 6570656E 64656E63 793E0A20 | <dependency>. |
157+
EMBED: 0170: 2020203C 64657065 6E64656E 74417373 | <dependentAss|
158+
EMBED: 0180: 656D626C 793E0A20 20202020 203C6173 |embly>. <as|
159+
EMBED: 0190: 73656D62 6C794964 656E7469 74792066 |semblyIdentity f|
160+
EMBED: 01A0: 6F6F3D27 62617227 202F3E0A 20202020 |oo='bar' />. |
161+
EMBED: 01B0: 3C2F6465 70656E64 656E7441 7373656D |</dependentAssem|
162+
EMBED: 01C0: 626C793E 0A20203C 2F646570 656E6465 |bly>. </depende|
163+
EMBED: 01D0: 6E63793E 0A20203C 64657065 6E64656E |ncy>. <dependen|
164+
EMBED: 01E0: 63793E0A 20202020 3C646570 656E6465 |cy>. <depende|
165+
EMBED: 01F0: 6E744173 73656D62 6C793E0A 20202020 |ntAssembly>. |
166+
EMBED: 0200: 20203C61 7373656D 626C7949 64656E74 | <assemblyIdent|
167+
EMBED: 0210: 69747920 62617A3D 27717575 7827202F |ity baz='quux' /|
168+
EMBED: 0220: 3E0A2020 20203C2F 64657065 6E64656E |>. </dependen|
169+
EMBED: 0230: 74417373 656D626C 793E0A20 203C2F64 |tAssembly>. </d|
170+
EMBED: 0240: 6570656E 64656E63 793E0A3C 2F617373 |ependency>.</ass|
171+
EMBED: 0250: 656D626C 793E0A |embly>.|
169172
EMBED: )

lld/test/COFF/manifestinput.test

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,21 @@
55
# RUN: /manifest:embed \
66
# RUN: /manifestuac:"level='requireAdministrator'" \
77
# RUN: /manifestinput:%p/Inputs/manifestinput.test %t.obj
8-
# RUN: llvm-readobj --coff-resources --file-headers %t.exe | FileCheck %s \
9-
# RUN: -check-prefix TEST_EMBED
8+
# RUN: llvm-readobj --coff-resources --file-headers %t.exe | FileCheck %s
109

11-
TEST_EMBED: ResourceTableRVA: 0x2000
12-
TEST_EMBED-NEXT: ResourceTableSize: 0x2A0
13-
TEST_EMBED-DAG: Resources [
14-
TEST_EMBED-NEXT: Total Number of Resources: 1
15-
TEST_EMBED-DAG: Number of String Entries: 0
16-
TEST_EMBED-NEXT: Number of ID Entries: 1
17-
TEST_EMBED-NEXT: Type: MANIFEST (ID 24) [
18-
TEST_EMBED-NEXT: Table Offset: 0x18
19-
TEST_EMBED-NEXT: Number of String Entries: 0
20-
TEST_EMBED-NEXT: Number of ID Entries: 1
21-
TEST_EMBED-NEXT: Name: (ID 1) [
22-
TEST_EMBED-NEXT: Table Offset: 0x30
23-
TEST_EMBED-NEXT: Number of String Entries: 0
24-
TEST_EMBED-NEXT: Number of ID Entries: 1
25-
TEST_EMBED-NEXT: Language: (ID 1033) [
26-
TEST_EMBED-NEXT: Entry Offset: 0x48
10+
CHECK: ResourceTableRVA: 0x2000
11+
CHECK-NEXT: ResourceTableSize: 0x2C8
12+
CHECK-DAG: Resources [
13+
CHECK-NEXT: Total Number of Resources: 1
14+
CHECK-DAG: Number of String Entries: 0
15+
CHECK-NEXT: Number of ID Entries: 1
16+
CHECK-NEXT: Type: MANIFEST (ID 24) [
17+
CHECK-NEXT: Table Offset: 0x18
18+
CHECK-NEXT: Number of String Entries: 0
19+
CHECK-NEXT: Number of ID Entries: 1
20+
CHECK-NEXT: Name: (ID 1) [
21+
CHECK-NEXT: Table Offset: 0x30
22+
CHECK-NEXT: Number of String Entries: 0
23+
CHECK-NEXT: Number of ID Entries: 1
24+
CHECK-NEXT: Language: (ID 1033) [
25+
CHECK-NEXT: Entry Offset: 0x48

0 commit comments

Comments
 (0)