mirror of https://github.com/garrytan/gstack.git
fix(security): validate JSON input in gstack-review-log
gstack-review-log appends its argument directly to a JSONL file with no validation. Malformed or crafted input could corrupt the review log or inject arbitrary content. Fix: validate input is parseable JSON via python3 before appending. Reject with exit 1 and stderr message if invalid.
This commit is contained in:
parent
7e0b879f8c
commit
8876893c59
|
|
@ -6,4 +6,13 @@ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
eval "$("$SCRIPT_DIR/gstack-slug" 2>/dev/null)"
|
eval "$("$SCRIPT_DIR/gstack-slug" 2>/dev/null)"
|
||||||
GSTACK_HOME="${GSTACK_HOME:-$HOME/.gstack}"
|
GSTACK_HOME="${GSTACK_HOME:-$HOME/.gstack}"
|
||||||
mkdir -p "$GSTACK_HOME/projects/$SLUG"
|
mkdir -p "$GSTACK_HOME/projects/$SLUG"
|
||||||
echo "$1" >> "$GSTACK_HOME/projects/$SLUG/$BRANCH-reviews.jsonl"
|
|
||||||
|
# Validate: input must be parseable JSON (reject malformed or injection attempts)
|
||||||
|
INPUT="$1"
|
||||||
|
if ! printf '%s' "$INPUT" | python3 -c "import json,sys; json.load(sys.stdin)" 2>/dev/null; then
|
||||||
|
# Not valid JSON — refuse to append
|
||||||
|
echo "gstack-review-log: invalid JSON, skipping" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$INPUT" >> "$GSTACK_HOME/projects/$SLUG/$BRANCH-reviews.jsonl"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue