Commit d839afd
Pass free-text workflow inputs through env, not shell interpolation
`inputs.message` (deprecate-npm.yml) and `inputs.version` (release-all.yml)
are free-text workflow_dispatch inputs that were interpolated directly into
run: scripts. Two problems:
- Correctness: a message containing an apostrophe broke the script, since the
value landed inside single quotes.
- Safety: the value is substituted before bash parses the line, so a crafted
input could run commands. workflow_dispatch needs write access, so this is
not remotely exploitable, but it is the pattern GitHub explicitly warns
against.
Both now arrive as environment variables and are referenced as "$VERSION" /
"$MESSAGE", which bash treats as data.
Boolean and choice inputs are left inline: GitHub constrains those to their
declared values, so they cannot carry arbitrary text.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent 566c28b commit d839afd
2 files changed
Lines changed: 27 additions & 12 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
50 | 53 | | |
| 54 | + | |
| 55 | + | |
51 | 56 | | |
52 | | - | |
53 | 57 | | |
54 | 58 | | |
55 | 59 | | |
| |||
63 | 67 | | |
64 | 68 | | |
65 | 69 | | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
66 | 73 | | |
67 | 74 | | |
68 | | - | |
69 | 75 | | |
70 | 76 | | |
71 | | - | |
| 77 | + | |
72 | 78 | | |
73 | 79 | | |
74 | | - | |
| 80 | + | |
75 | 81 | | |
76 | 82 | | |
77 | 83 | | |
| |||
80 | 86 | | |
81 | 87 | | |
82 | 88 | | |
83 | | - | |
| 89 | + | |
84 | 90 | | |
85 | 91 | | |
86 | 92 | | |
87 | 93 | | |
88 | 94 | | |
89 | 95 | | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
90 | 100 | | |
91 | | - | |
92 | 101 | | |
93 | 102 | | |
94 | 103 | | |
| |||
98 | 107 | | |
99 | 108 | | |
100 | 109 | | |
101 | | - | |
| 110 | + | |
102 | 111 | | |
103 | | - | |
| 112 | + | |
104 | 113 | | |
105 | | - | |
| 114 | + | |
106 | 115 | | |
107 | 116 | | |
108 | 117 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| 51 | + | |
| 52 | + | |
51 | 53 | | |
| 54 | + | |
| 55 | + | |
52 | 56 | | |
53 | | - | |
54 | | - | |
| 57 | + | |
| 58 | + | |
55 | 59 | | |
56 | 60 | | |
57 | 61 | | |
| |||
378 | 382 | | |
379 | 383 | | |
380 | 384 | | |
| 385 | + | |
| 386 | + | |
381 | 387 | | |
382 | 388 | | |
383 | 389 | | |
384 | 390 | | |
385 | | - | |
| 391 | + | |
386 | 392 | | |
387 | 393 | | |
388 | 394 | | |
| |||
0 commit comments