Skip to content

Commit da1c481

Browse files
committed
refactor to prevent injection
1 parent 9c47cff commit da1c481

1 file changed

Lines changed: 16 additions & 13 deletions

File tree

action.yml

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -92,46 +92,49 @@ runs:
9292
PG_VERSION="$INPUT_PG_VERSION"
9393
VERBOSE="$INPUT_VERBOSE"
9494
95-
COMMAND="squawk"
95+
COMMAND=(squawk)
9696
9797
if "$ASSUME_IN_TRANSACTION"; then
98-
COMMAND="$COMMAND --assume-in-transaction"
98+
COMMAND+=(--assume-in-transaction)
9999
fi
100100
101101
if [ -n "$CONFIG" ]; then
102-
COMMAND="$COMMAND --config=$CONFIG"
102+
COMMAND+=("--config=$CONFIG")
103103
fi
104104
105105
if [ -n "$EXCLUDE" ]; then
106-
COMMAND="$COMMAND --exclude=$EXCLUDE"
106+
COMMAND+=("--exclude=$EXCLUDE")
107107
fi
108108
109109
if [ -n "$PG_VERSION" ]; then
110-
COMMAND="$COMMAND --pg-version=$PG_VERSION"
110+
COMMAND+=("--pg-version=$PG_VERSION")
111111
fi
112112
113113
if "$VERBOSE"; then
114-
COMMAND="$COMMAND --verbose"
114+
COMMAND+=(--verbose)
115115
fi
116116
117117
# We can only leave a comment when we run on pull_request.
118118
if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then
119119
if "$UPLOAD_TO_GITHUB"; then
120-
COMMAND="$COMMAND upload-to-github"
120+
COMMAND+=(upload-to-github)
121121
fi
122122
123123
if "$FAIL_ON_VIOLATIONS"; then
124-
COMMAND="$COMMAND --fail-on-violations"
124+
COMMAND+=(--fail-on-violations)
125125
fi
126126
fi
127127
128128
if [ -n "$FILES" ]; then
129-
COMMAND="$COMMAND $FILES"
129+
# FILES is a space-separated list of paths (no globs).
130+
read -ra FILES_ARRAY <<< "$FILES"
131+
COMMAND+=("${FILES_ARRAY[@]}")
130132
fi
131133
132134
if [ -n "$PATTERN" ]; then
133-
expandedFiles=$(find . \( -path "./$PATTERN" -or -path "$PATTERN" \) -type f | xargs echo)
134-
COMMAND="$COMMAND $expandedFiles"
135+
while IFS= read -r -d '' file; do
136+
COMMAND+=("$file")
137+
done < <(find . \( -path "./$PATTERN" -or -path "$PATTERN" \) -type f -print0)
135138
fi
136139
137140
export SQUAWK_GITHUB_API_URL=$GITHUB_API_URL
@@ -140,5 +143,5 @@ runs:
140143
export SQUAWK_GITHUB_REPO_NAME=$(jq --raw-output .repository.name "$GITHUB_EVENT_PATH")
141144
export SQUAWK_GITHUB_PR_NUMBER=$(jq --raw-output .pull_request.number "$GITHUB_EVENT_PATH")
142145
143-
echo "Running: $COMMAND"
144-
sh -c "$COMMAND"
146+
echo "Running: ${COMMAND[*]}"
147+
"${COMMAND[@]}"

0 commit comments

Comments
 (0)