Commit 74ace4f
committed
[clang][modules] Guard against bad -fmodule-file mappings (#132059)
Fix #132059.
Providing incorrect mappings via -fmodule-file=<name>=<path/to/bmi>,
such that the BMI file corresponds to a different module which
transitively imports the specified module, could previously crash the
compiler.
The crash is caused during serialization, when trying to resolve
declaration IDs in the AST body after having loaded the wrong module.
This commit fixes the issue by checking the module's identity while
reading the AST's control block and erroring out if a mismatch is
detected.1 parent 2796e41 commit 74ace4f
File tree
7 files changed
+124
-31
lines changed- clang
- include/clang
- Basic
- Serialization
- lib
- Frontend
- Serialization
- test/Modules
7 files changed
+124
-31
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
98 | 98 | | |
99 | 99 | | |
100 | 100 | | |
| 101 | + | |
| 102 | + | |
101 | 103 | | |
102 | 104 | | |
103 | 105 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
423 | 423 | | |
424 | 424 | | |
425 | 425 | | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
426 | 429 | | |
427 | 430 | | |
428 | 431 | | |
| |||
1512 | 1515 | | |
1513 | 1516 | | |
1514 | 1517 | | |
| 1518 | + | |
1515 | 1519 | | |
1516 | 1520 | | |
1517 | 1521 | | |
1518 | 1522 | | |
1519 | 1523 | | |
| 1524 | + | |
1520 | 1525 | | |
1521 | 1526 | | |
1522 | 1527 | | |
| |||
1819 | 1824 | | |
1820 | 1825 | | |
1821 | 1826 | | |
| 1827 | + | |
| 1828 | + | |
| 1829 | + | |
| 1830 | + | |
| 1831 | + | |
| 1832 | + | |
| 1833 | + | |
| 1834 | + | |
| 1835 | + | |
| 1836 | + | |
| 1837 | + | |
| 1838 | + | |
1822 | 1839 | | |
1823 | 1840 | | |
1824 | 1841 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
887 | 887 | | |
888 | 888 | | |
889 | 889 | | |
| 890 | + | |
890 | 891 | | |
891 | 892 | | |
892 | 893 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
81 | 81 | | |
82 | 82 | | |
83 | 83 | | |
| 84 | + | |
84 | 85 | | |
85 | 86 | | |
86 | 87 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
676 | 676 | | |
677 | 677 | | |
678 | 678 | | |
| 679 | + | |
679 | 680 | | |
680 | 681 | | |
681 | 682 | | |
| |||
1909 | 1910 | | |
1910 | 1911 | | |
1911 | 1912 | | |
1912 | | - | |
1913 | | - | |
1914 | | - | |
1915 | | - | |
1916 | | - | |
1917 | | - | |
1918 | | - | |
| 1913 | + | |
| 1914 | + | |
| 1915 | + | |
| 1916 | + | |
| 1917 | + | |
| 1918 | + | |
1919 | 1919 | | |
1920 | 1920 | | |
1921 | 1921 | | |
| |||
1952 | 1952 | | |
1953 | 1953 | | |
1954 | 1954 | | |
| 1955 | + | |
1955 | 1956 | | |
1956 | 1957 | | |
1957 | 1958 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2926 | 2926 | | |
2927 | 2927 | | |
2928 | 2928 | | |
| 2929 | + | |
| 2930 | + | |
2929 | 2931 | | |
2930 | 2932 | | |
2931 | 2933 | | |
| |||
3020 | 3022 | | |
3021 | 3023 | | |
3022 | 3024 | | |
3023 | | - | |
3024 | | - | |
3025 | | - | |
3026 | | - | |
3027 | | - | |
| 3025 | + | |
| 3026 | + | |
| 3027 | + | |
| 3028 | + | |
3028 | 3029 | | |
3029 | 3030 | | |
3030 | 3031 | | |
| |||
3315 | 3316 | | |
3316 | 3317 | | |
3317 | 3318 | | |
3318 | | - | |
| 3319 | + | |
3319 | 3320 | | |
3320 | 3321 | | |
3321 | 3322 | | |
| |||
3338 | 3339 | | |
3339 | 3340 | | |
3340 | 3341 | | |
3341 | | - | |
| 3342 | + | |
| 3343 | + | |
| 3344 | + | |
| 3345 | + | |
3342 | 3346 | | |
3343 | 3347 | | |
3344 | 3348 | | |
| |||
3363 | 3367 | | |
3364 | 3368 | | |
3365 | 3369 | | |
| 3370 | + | |
| 3371 | + | |
| 3372 | + | |
| 3373 | + | |
| 3374 | + | |
| 3375 | + | |
| 3376 | + | |
| 3377 | + | |
3366 | 3378 | | |
3367 | 3379 | | |
3368 | 3380 | | |
| |||
4684 | 4696 | | |
4685 | 4697 | | |
4686 | 4698 | | |
| 4699 | + | |
| 4700 | + | |
| 4701 | + | |
| 4702 | + | |
| 4703 | + | |
| 4704 | + | |
| 4705 | + | |
| 4706 | + | |
| 4707 | + | |
4687 | 4708 | | |
4688 | 4709 | | |
4689 | 4710 | | |
| |||
4702 | 4723 | | |
4703 | 4724 | | |
4704 | 4725 | | |
4705 | | - | |
4706 | | - | |
| 4726 | + | |
| 4727 | + | |
4707 | 4728 | | |
4708 | 4729 | | |
4709 | 4730 | | |
| |||
4954 | 4975 | | |
4955 | 4976 | | |
4956 | 4977 | | |
4957 | | - | |
4958 | | - | |
4959 | | - | |
4960 | | - | |
4961 | | - | |
4962 | | - | |
4963 | | - | |
4964 | | - | |
4965 | | - | |
| 4978 | + | |
| 4979 | + | |
| 4980 | + | |
| 4981 | + | |
| 4982 | + | |
4966 | 4983 | | |
4967 | 4984 | | |
4968 | | - | |
4969 | | - | |
4970 | | - | |
4971 | | - | |
4972 | | - | |
| 4985 | + | |
| 4986 | + | |
| 4987 | + | |
4973 | 4988 | | |
4974 | 4989 | | |
4975 | 4990 | | |
| 4991 | + | |
| 4992 | + | |
| 4993 | + | |
| 4994 | + | |
| 4995 | + | |
| 4996 | + | |
| 4997 | + | |
4976 | 4998 | | |
4977 | 4999 | | |
4978 | 5000 | | |
| |||
5053 | 5075 | | |
5054 | 5076 | | |
5055 | 5077 | | |
5056 | | - | |
| 5078 | + | |
| 5079 | + | |
5057 | 5080 | | |
5058 | 5081 | | |
5059 | 5082 | | |
| |||
5075 | 5098 | | |
5076 | 5099 | | |
5077 | 5100 | | |
| 5101 | + | |
| 5102 | + | |
5078 | 5103 | | |
5079 | 5104 | | |
5080 | 5105 | | |
| |||
Lines changed: 46 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
0 commit comments