概要
src/github.ts の fetchText / fetchJson は許可ホストからのレスポンスボディを上限なしで読み切る。許可ホストが(侵害等で)巨大/無限ストリームを返した場合、メモリ枯渇やハングの恐れがある。per-request タイムアウトも無く、唯一の backstop は job の timeout-minutes。
受け入れ条件
- checksums / JSON 取得に妥当なボディサイズ上限を設け、超過は失敗にする(transient / permanent の別は要検討)
- per-attempt のタイムアウト(
AbortSignal.timeout 等)を導入し、ハングを withRetry でリトライ可能にする
- 既定値は通常の go-task リリース資産で余裕を持って収まる値
- 正常系で回帰がないこと(self-test green)
参照
概要
src/github.tsのfetchText/fetchJsonは許可ホストからのレスポンスボディを上限なしで読み切る。許可ホストが(侵害等で)巨大/無限ストリームを返した場合、メモリ枯渇やハングの恐れがある。per-request タイムアウトも無く、唯一の backstop は job のtimeout-minutes。受け入れ条件
AbortSignal.timeout等)を導入し、ハングをwithRetryでリトライ可能にする参照
src/github.tsfetchText/fetchJson、src/download.tswithRetry