Commit b65dce2
authored
fix(builtins): cap AWK printf width/precision to prevent memory exhaustion (#1048)
## Summary
- Cap width and precision values to 10,000 in AWK `format_string()`
- Return error + exit code 2 when limit exceeded
- Apply same cap to bash `printf` builtin width parsing for consistency
- Prevents ~1GB allocation from `printf "%999999999d", 1`
## Test plan
- [ ] `awk '{printf "%999999999d", 1}'` rejected with error, exit 2
- [ ] `awk '{printf "%999999999.5f", 1}'` rejected with error, exit 2
- [ ] `awk '{printf "%20d\n", 42}'` works correctly
- [ ] `awk '{printf "%10000d\n", 1}'` works at boundary
- [ ] All 1929 existing spec tests pass
Closes #9831 parent 0b91a41 commit b65dce2
File tree
3 files changed
+93
-14
lines changed- crates/bashkit
- src/builtins
- tests/spec_cases/bash
3 files changed
+93
-14
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2490 | 2490 | | |
2491 | 2491 | | |
2492 | 2492 | | |
2493 | | - | |
| 2493 | + | |
| 2494 | + | |
| 2495 | + | |
| 2496 | + | |
| 2497 | + | |
| 2498 | + | |
| 2499 | + | |
| 2500 | + | |
2494 | 2501 | | |
2495 | 2502 | | |
2496 | 2503 | | |
| |||
2768 | 2775 | | |
2769 | 2776 | | |
2770 | 2777 | | |
2771 | | - | |
| 2778 | + | |
| 2779 | + | |
| 2780 | + | |
| 2781 | + | |
| 2782 | + | |
| 2783 | + | |
| 2784 | + | |
| 2785 | + | |
2772 | 2786 | | |
2773 | 2787 | | |
2774 | 2788 | | |
| |||
2839 | 2853 | | |
2840 | 2854 | | |
2841 | 2855 | | |
2842 | | - | |
2843 | | - | |
| 2856 | + | |
| 2857 | + | |
| 2858 | + | |
| 2859 | + | |
| 2860 | + | |
| 2861 | + | |
| 2862 | + | |
| 2863 | + | |
| 2864 | + | |
| 2865 | + | |
| 2866 | + | |
2844 | 2867 | | |
2845 | 2868 | | |
2846 | 2869 | | |
| |||
2857 | 2880 | | |
2858 | 2881 | | |
2859 | 2882 | | |
| 2883 | + | |
| 2884 | + | |
| 2885 | + | |
| 2886 | + | |
| 2887 | + | |
| 2888 | + | |
| 2889 | + | |
| 2890 | + | |
| 2891 | + | |
2860 | 2892 | | |
2861 | | - | |
| 2893 | + | |
2862 | 2894 | | |
2863 | 2895 | | |
2864 | 2896 | | |
| |||
2967 | 2999 | | |
2968 | 3000 | | |
2969 | 3001 | | |
2970 | | - | |
| 3002 | + | |
2971 | 3003 | | |
2972 | 3004 | | |
2973 | 3005 | | |
| |||
3026 | 3058 | | |
3027 | 3059 | | |
3028 | 3060 | | |
3029 | | - | |
3030 | | - | |
3031 | | - | |
| 3061 | + | |
| 3062 | + | |
| 3063 | + | |
| 3064 | + | |
| 3065 | + | |
| 3066 | + | |
| 3067 | + | |
| 3068 | + | |
| 3069 | + | |
| 3070 | + | |
| 3071 | + | |
| 3072 | + | |
3032 | 3073 | | |
3033 | | - | |
3034 | 3074 | | |
3035 | 3075 | | |
3036 | 3076 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
65 | | - | |
66 | | - | |
| 65 | + | |
| 66 | + | |
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
| |||
119 | 119 | | |
120 | 120 | | |
121 | 121 | | |
122 | | - | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
123 | 126 | | |
124 | 127 | | |
125 | 128 | | |
| |||
140 | 143 | | |
141 | 144 | | |
142 | 145 | | |
143 | | - | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
144 | 150 | | |
145 | 151 | | |
146 | 152 | | |
| |||
Lines changed: 33 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 | + | |
0 commit comments