apply_patch drops the executable bit when moving a script

Aperta Adatta ai principianti
#61,431 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
72/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
linux, rust
Ambito
cli

Direzione di ricerca

Il ramo di spostamento dell'implementazione della patch si trova in codex-rs/apply-patch/src/lib.rs, intorno alle righe 583-629; leggilo per capire come viene scritto il file di destinazione e rimosso quello sorgente. Riproduci il problema con i passaggi di shell della issue e conferma che stat -c '%a %n' start.sh stampa 644 invece di 755. È completato quando il file spostato mantiene i bit dei permessi del sorgente, coperto da un test di regressione che sposta uno script 0755 in un nuovo percorso e lo esegue.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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

Lingua principale
Rust
Stelle
135k
Fork
21.4k
Merge medio
1m
PR unite (30g)
997

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di openai/codex

Tutte le issue di openai/codex

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.