Commit 8dc7a48
committed
gh-140739: Fix crashes from corrupted remote memory
The remote debugging module reads memory from another Python process
which can be modified or freed at any time due to race conditions.
When garbage data is read, various code paths could cause SIGSEGV
crashes in the profiler process itself rather than gracefully
rejecting the sample.
Add bounds checking and validation for data read from remote memory:
linetable parsing now checks buffer bounds, PyLong reading validates
digit count, stack chunk sizes are bounded, set iteration limits
table size, task pointer arithmetic checks for underflow, TLBC index
is validated against array bounds, and thread list iteration detects
cycles. All cases now reject the sample with an exception instead of
crashing or looping forever.1 parent cf6758f commit 8dc7a48
File tree
6 files changed
+156
-36
lines changed- Modules/_remote_debugging
6 files changed
+156
-36
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
140 | 140 | | |
141 | 141 | | |
142 | 142 | | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
143 | 148 | | |
144 | 149 | | |
145 | 150 | | |
| |||
451 | 456 | | |
452 | 457 | | |
453 | 458 | | |
| 459 | + | |
454 | 460 | | |
455 | 461 | | |
456 | 462 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
112 | 112 | | |
113 | 113 | | |
114 | 114 | | |
115 | | - | |
| 115 | + | |
116 | 116 | | |
117 | 117 | | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
118 | 126 | | |
119 | 127 | | |
120 | 128 | | |
| |||
812 | 820 | | |
813 | 821 | | |
814 | 822 | | |
815 | | - | |
| 823 | + | |
| 824 | + | |
816 | 825 | | |
817 | 826 | | |
818 | 827 | | |
819 | 828 | | |
820 | 829 | | |
821 | 830 | | |
822 | | - | |
823 | | - | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
| 834 | + | |
| 835 | + | |
| 836 | + | |
| 837 | + | |
| 838 | + | |
824 | 839 | | |
825 | 840 | | |
826 | 841 | | |
827 | 842 | | |
828 | 843 | | |
829 | 844 | | |
830 | | - | |
| 845 | + | |
831 | 846 | | |
832 | 847 | | |
833 | | - | |
| 848 | + | |
834 | 849 | | |
835 | 850 | | |
836 | 851 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
123 | 123 | | |
124 | 124 | | |
125 | 125 | | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
126 | 137 | | |
127 | | - | |
| 138 | + | |
128 | 139 | | |
129 | | - | |
130 | | - | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
131 | 144 | | |
132 | 145 | | |
133 | 146 | | |
134 | | - | |
135 | | - | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
136 | 150 | | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
137 | 155 | | |
138 | 156 | | |
139 | | - | |
| 157 | + | |
140 | 158 | | |
141 | 159 | | |
142 | 160 | | |
143 | | - | |
| 161 | + | |
144 | 162 | | |
145 | | - | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
146 | 167 | | |
147 | | - | |
| 168 | + | |
148 | 169 | | |
149 | 170 | | |
150 | | - | |
| 171 | + | |
151 | 172 | | |
152 | 173 | | |
153 | 174 | | |
154 | 175 | | |
155 | | - | |
| 176 | + | |
| 177 | + | |
156 | 178 | | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
157 | 184 | | |
| 185 | + | |
158 | 186 | | |
159 | 187 | | |
| 188 | + | |
| 189 | + | |
160 | 190 | | |
161 | 191 | | |
162 | 192 | | |
163 | | - | |
| 193 | + | |
164 | 194 | | |
165 | 195 | | |
166 | 196 | | |
| |||
173 | 203 | | |
174 | 204 | | |
175 | 205 | | |
176 | | - | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
177 | 211 | | |
178 | | - | |
179 | | - | |
180 | | - | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
181 | 227 | | |
182 | 228 | | |
183 | | - | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
184 | 234 | | |
185 | 235 | | |
186 | 236 | | |
| |||
189 | 239 | | |
190 | 240 | | |
191 | 241 | | |
192 | | - | |
193 | | - | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
194 | 250 | | |
195 | 251 | | |
196 | | - | |
197 | | - | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
198 | 256 | | |
199 | 257 | | |
200 | 258 | | |
201 | | - | |
202 | | - | |
| 259 | + | |
| 260 | + | |
203 | 261 | | |
204 | 262 | | |
205 | 263 | | |
| |||
384 | 442 | | |
385 | 443 | | |
386 | 444 | | |
387 | | - | |
388 | | - | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
389 | 453 | | |
390 | 454 | | |
391 | 455 | | |
| |||
398 | 462 | | |
399 | 463 | | |
400 | 464 | | |
401 | | - | |
| 465 | + | |
402 | 466 | | |
403 | 467 | | |
404 | 468 | | |
| |||
409 | 473 | | |
410 | 474 | | |
411 | 475 | | |
| 476 | + | |
412 | 477 | | |
413 | 478 | | |
414 | 479 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
48 | 57 | | |
49 | 58 | | |
50 | 59 | | |
| |||
129 | 138 | | |
130 | 139 | | |
131 | 140 | | |
132 | | - | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
133 | 146 | | |
134 | 147 | | |
135 | 148 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
584 | 584 | | |
585 | 585 | | |
586 | 586 | | |
| 587 | + | |
587 | 588 | | |
588 | 589 | | |
589 | 590 | | |
590 | 591 | | |
591 | 592 | | |
592 | 593 | | |
593 | 594 | | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
594 | 603 | | |
595 | 604 | | |
596 | 605 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
194 | 194 | | |
195 | 195 | | |
196 | 196 | | |
197 | | - | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
198 | 210 | | |
199 | | - | |
| 211 | + | |
200 | 212 | | |
201 | 213 | | |
202 | 214 | | |
203 | 215 | | |
204 | 216 | | |
205 | 217 | | |
206 | 218 | | |
207 | | - | |
| 219 | + | |
208 | 220 | | |
209 | 221 | | |
210 | 222 | | |
| |||
0 commit comments