env: a NUL byte in a `--file` entry reaches `std::env::set_var` unvalidated and aborts the process (exit 134)
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 82/100
Línea de trabajo
Comienza en src/uu/env/src/env.rs alrededor de las líneas 331-338 y sigue la ruta de --file desde las entradas analizadas hasta std::env::set_var; compárala con apply_specified_env_vars, que protege la ruta de argv. Reproduce los casos NUL de clave y valor del issue y verifica que ambos produzcan un diagnóstico y un fallo sin panic, en lugar de terminar con exit 134.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Rust
- Estrellas
- 24.2k
- Forks
- 2.1k
- Merge medio
- 1 d 6 h
- PR fusionados (30 d)
- 320
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de uutils/coreutils
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
uutils/coreutils#14962 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
awaiting upstream B - low priority dependencies
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
awaiting upstream B - medium priority dependencies
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
B - high priority U - wc
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
Todos los issues de uutils/coreutils
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
trezor/trezor-firmware#7997 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
smol-machines/smolvm#1489 · 1 comentario · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día