Repository navigation
Commit 5b8333c
committed
Reject __proto__ as a flat messages() code, closing a sibling of GHSA-gg4h-3hg2-grpc
compile()/merge() in lib/messages.js were patched in GHSA-6w3j-5fw6-r9vr
so a language named __proto__ can no longer overwrite the global
Object.prototype. Both functions have a second write path that fix
didn't reach: the flat, non-language error-code branch (target[code] =
message / target[code] = new Template(message)). A top-level messages()
key of __proto__ mapped to a string or template replaces the returned
messages object's own prototype, the same confined-impact class already
fixed for rename() in GHSA-gg4h-3hg2-grpc, in a sibling function that
fix never touched. A language-scoped sub-key named __proto__ has the
identical issue one level deeper.
Reject __proto__ at each flat-write site in both compile() and merge(),
mirroring the approach already used for rename(). New PoC test file
locks in the fix at the Messages module level and through the public
.messages()/.prefs() API. Full suite (1837 tests) passes after.
Issue: #31501 parent e30b50e commit 5b8333c
2 files changed
Lines changed: 63 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
39 | 44 | | |
40 | 45 | | |
41 | 46 | | |
42 | 47 | | |
43 | 48 | | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
44 | 52 | | |
45 | 53 | | |
46 | 54 | | |
| |||
59 | 67 | | |
60 | 68 | | |
61 | 69 | | |
| 70 | + | |
| 71 | + | |
62 | 72 | | |
63 | 73 | | |
64 | 74 | | |
| |||
146 | 156 | | |
147 | 157 | | |
148 | 158 | | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
149 | 163 | | |
150 | 164 | | |
151 | 165 | | |
152 | 166 | | |
153 | 167 | | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
154 | 171 | | |
155 | 172 | | |
156 | 173 | | |
| |||
169 | 186 | | |
170 | 187 | | |
171 | 188 | | |
| 189 | + | |
| 190 | + | |
172 | 191 | | |
173 | 192 | | |
174 | 193 | | |
| |||
| 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 | + | |
0 commit comments