Commit 90bbd7a
fix(python): prevent heredoc delimiter injection in write() (#449)
## Summary
- Generate random heredoc delimiter suffix using `secrets.token_hex(8)`
to prevent content injection
- Quote file path with `shlex.quote()` for path injection prevention
- Extract `_build_write_cmd()` helper for testability
Closes #412
## Test plan
- [x] Test verifies content with `BASHKIT_EOF` is written literally
- [x] Test verifies file paths with spaces are properly quoted
- [x] Test verifies each call generates unique delimiters
- [x] `ruff check` and `ruff format` pass
Co-authored-by: Claude <noreply@anthropic.com>1 parent ac4f4a9 commit 90bbd7a
File tree
2 files changed
+57
-1
lines changed- crates/bashkit-python
- bashkit
- tests
2 files changed
+57
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| 16 | + | |
16 | 17 | | |
17 | 18 | | |
18 | 19 | | |
| |||
49 | 50 | | |
50 | 51 | | |
51 | 52 | | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
52 | 64 | | |
53 | 65 | | |
54 | 66 | | |
| |||
196 | 208 | | |
197 | 209 | | |
198 | 210 | | |
199 | | - | |
| 211 | + | |
200 | 212 | | |
201 | 213 | | |
202 | 214 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
95 | 95 | | |
96 | 96 | | |
97 | 97 | | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
98 | 142 | | |
99 | 143 | | |
100 | 144 | | |
| |||
0 commit comments