apply_patch drops the executable bit when moving a script

Abierto Apto para principiantes
#61,431 0 comentarios 0 reacciones 0 asignados Ver en GitHub

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
72/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
linux, rust
Área
cli

Línea de trabajo

La rama de movimiento de la implementación del parche está en codex-rs/apply-patch/src/lib.rs, alrededor de las líneas 583-629; léela para ver cómo se escribe el archivo de destino y se elimina el origen. Reproduce el problema con los pasos de shell del issue y confirma que stat -c '%a %n' start.sh muestra 644 en lugar de 755. Está terminado cuando el archivo movido conserva los bits de permisos del origen, cubierto por una prueba de regresión que mueve un script 0755 a una nueva ruta y lo ejecuta.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug CLI tool-calls

Moving and editing an executable script with *** Move to: reports success, but the new file is mode 0644. A build or CI job that invokes the renamed script directly fails with exit status 126.

Environment Official Linux x86_64 CLI 0.169.0, umask 022. Also reproduced on 0.167.0-alpha.4. No model or account is needed.

Steps to reproduce

Run in an empty temporary directory. The command below invokes the patch implementation shipped in the Codex binary.

umask 022
printf '#!/bin/sh\necho before\n' > launch.sh
chmod 755 launch.sh
./launch.sh
codex --codex-run-as-apply-patch '*** Begin Patch
*** Update File: launch.sh
*** Move to: start.sh
@@
-echo before
+echo after
*** End Patch'
stat -c '%a %n' start.sh
./start.sh

Observed The original script prints before. The patch exits 0 and reports M start.sh. The mode check prints 644 start.sh, and executing it gives Permission denied.

Expected The renamed script retains mode 0755 and prints after.

Suggested fix Preserve the source file's executable bits when materializing the moved file. A regression test could move a 0755 script to a previously nonexistent destination and execute it. The move branch currently writes the new path and removes the old one. Move implementation

Lenguaje dominante
Rust
Estrellas
135k
Forks
21.4k
Merge medio
1 min
PR fusionados (30 d)
997

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de openai/codex

Todos los issues de openai/codex

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.