env: a NUL byte in a `--file` entry reaches `std::env::set_var` unvalidated and aborts the process (exit 134)
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
src/uu/env/src/env.rs の331~338行目付近から始め、解析されたエントリから std::env::set_var までの --file パスを追跡します。argv パスを保護している apply_specified_env_vars と比較してください。issue にあるキーと値の NUL ケースを再現し、どちらも診断と panic しない失敗を生成し、exit 134 で終了しないことを確認してください。
索引モデルが issue の本文から書いたものです。
説明
env --file FILE parses an .env/INI file and passes each key and value straight to std::env::set_var, which panics when either contains a NUL byte. A single NUL anywhere in the file therefore aborts env with a Rust panic instead of a diagnostic.
The argv path (env NAME=VALUE ...) is guarded — apply_specified_env_vars checks for an empty name before calling set_var, but the --file path has no guard at all.
Steps to reproduce
A NUL in the value:
$ printf 'KEY=a\x00b\n' > conf.env
$ env --file conf.env
thread 'main' panicked at library/std/src/env.rs:361:9:
failed to set environment variable `"KEY"` to `"a\0b"`: file name contained an unexpected NUL byte
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
$ echo $?
134
A NUL in the key does the same:
$ printf 'a\x00b=c\n' > k.env
$ env --file k.env # exit 134, identical panic
Root cause
std::env::set_var panics if either argument contains a NUL. Nothing between the parser and this call validates the bytes.
- 主要言語
- Rust
- スター
- 24.2k
- フォーク
- 2.1k
- 平均マージ
- 1日 6時間
- マージ済み PR(30日)
- 320
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
uutils/coreutils のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
uutils/coreutils#14962 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
awaiting upstream B - low priority dependencies
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
awaiting upstream B - medium priority dependencies
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
B - high priority U - wc
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
uutils/coreutils の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
trezor/trezor-firmware#7997 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
smol-machines/smolvm#1489 · コメント 1 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
メンテナーはふだん 1 日以内に返信