path-hardening
main
ステップ9: ファイル名の上限拡大と、動画の配信・削除の os.Root への置き換え。
os.Root
internal/media
namlen=255
RelativeVideoPath
(string, error)
internal/worker
invalid_output
internal/web
os.OpenRoot
Root.Open
Root.Remove
VIDEO_DIR
../
PROJECT.md
go test -count=1 ./...
go test -race
go vet
git pull
🤖 Generated with Claude Code
https://claude.ai/code/session_01BcuBr9DyfcqZY8xFQsY5Di
# Conflicts: # PROJECT.md
No dependencies set.
The note is not visible to the blocked user.
概要
ステップ9: ファイル名の上限拡大と、動画の配信・削除の
os.Rootへの置き換え。internal/media: 番組名 90 バイト・回タイトル 140 バイト(UTF-8)に拡大し、80 文字の上限を廃止。ファイル名全体を 255 バイト以下に保つ(超える場合は回タイトルから削る)。根拠は本番の NFS マウントのnamlen=255RelativeVideoPathがエラーを返す(戻り値を(string, error)に変更)。実際の TVer の ID は 10 文字程度internal/worker: ファイル名を作れないジョブはダウンロード開始前にinvalid_outputで失敗させ、理由を記録して作業ディレクトリを片付けるinternal/web: 動画の配信・削除をos.OpenRoot+Root.Open/Root.Removeに置き換え、自前のパス検査を削除。VIDEO_DIRの外(../・絶対パス・外を指すリンク・絶対リンク)は OS の仕組みで拒否([公式] https://pkg.go.dev/os#Root)PROJECT.mdを更新確認
go test -count=1 ./...→ 188件成功・0失敗、go test -race(web・media・worker)競合なし、go vet指摘0注意
PROJECT.mdの課題欄にあるos.Rootの項目は #12 にだけ存在する。両方のマージ後に残っていないことを確認するgit pullと再ビルドが必要🤖 Generated with Claude Code
https://claude.ai/code/session_01BcuBr9DyfcqZY8xFQsY5Di