fix: add JSON validation in write_index to prevent malformed index.json
The index.json was getting corrupted (ending with 'issues: }' instead of 'issues: {}').
Added validation that checks if the JSON is valid before moving the temp file.
If invalid, the write is aborted with an error message showing the problematic values.
This commit is contained in:
@@ -481,6 +481,13 @@ write_index() {
|
|||||||
local issues_json="$3"
|
local issues_json="$3"
|
||||||
local temp_file="$INDEX_FILE.tmp.$$"
|
local temp_file="$INDEX_FILE.tmp.$$"
|
||||||
printf '{"base": %s, "pm_agent": %s, "issues": %s}\n' "$base" "$pm_agent" "$issues_json" > "$temp_file"
|
printf '{"base": %s, "pm_agent": %s, "issues": %s}\n' "$base" "$pm_agent" "$issues_json" > "$temp_file"
|
||||||
|
|
||||||
|
if ! python3 -c "import json; json.load(open('$temp_file'))" 2>/dev/null; then
|
||||||
|
echo "Error: write_index would create malformed JSON, aborting. base=$base, pm_agent=$pm_agent, issues_json=$issues_json" >&2
|
||||||
|
rm -f "$temp_file"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
mv "$temp_file" "$INDEX_FILE"
|
mv "$temp_file" "$INDEX_FILE"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,13 @@ write_index() {
|
|||||||
local issues_json="$3"
|
local issues_json="$3"
|
||||||
local temp_file="$INDEX_FILE.tmp.$$"
|
local temp_file="$INDEX_FILE.tmp.$$"
|
||||||
printf '{"base": %s, "pm_agent": %s, "issues": %s}\n' "$base" "$pm_agent" "$issues_json" > "$temp_file"
|
printf '{"base": %s, "pm_agent": %s, "issues": %s}\n' "$base" "$pm_agent" "$issues_json" > "$temp_file"
|
||||||
|
|
||||||
|
if ! python3 -c "import json; json.load(open('$temp_file'))" 2>/dev/null; then
|
||||||
|
echo "Error: write_index would create malformed JSON, aborting. base=$base, pm_agent=$pm_agent, issues_json=$issues_json" >&2
|
||||||
|
rm -f "$temp_file"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
mv "$temp_file" "$INDEX_FILE"
|
mv "$temp_file" "$INDEX_FILE"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user