--userns-block-fd can hang when given a closed descriptor
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
- c, linux
- Ambito
- cli, operating-systems
Direzione di ricerca
Inizia leggendo l’analisi dell’argomento --userns-block-fd e il codice di configurazione attorno a bubblewrap.c:3179-3180, dove il descrittore fornito viene letto e chiuso. Controlla come vengono allocati child_wait_fd e setup_finished_pipe, quindi esegui entrambe le riproduzioni dell’issue. Il lavoro è completato quando i descrittori chiusi vengono rifiutati con un errore prima che la configurazione possa bloccarsi.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
bubblewrap 0.13.1 accepts a closed --userns-block-fd descriptor and can reuse its number for its internal eventfd or, with --json-status-fd, its setup-completion pipe.
Both runs below hung until timeout -s KILL 20 killed them (status 137).
To reproduce:
bwrap --unshare-user --info-fd 1 --userns-block-fd 4 --ro-bind / / --proc /proc --dev /dev /bin/true 3<&- 4<&-
strace:
2865 openat(AT_FDCWD, "/proc", O_RDONLY|O_PATH) = 3
2865 eventfd2(0, EFD_CLOEXEC) = 4
2865 clone(child_stack=NULL, flags=CLONE_NEWNS|CLONE_NEWUSER|SIGCHLD) = 2866
2866 read(4, <unfinished ...>
2865 read(4, 0x7ffe9b5a5857, 1) = -1 EINVAL (Invalid argument)
2865 write(4, "\1\0\0\0\0\0\0\0", 8) = -1 EBADF (Bad file descriptor)
child_wait_fd gets descriptor 4. The parent's 1-byte read of opt_userns_block_fd fails with EINVAL. The parent closes that descriptor (bubblewrap.c:3180), which is also child_wait_fd. Its write to child_wait_fd fails with EBADF, leaving the child blocked.
With --json-status-fd:
bwrap --unshare-user --info-fd 1 --json-status-fd 2 --userns-block-fd 5 --ro-bind / / --proc /proc --dev /dev /bin/true 3<&- 4<&- 5<&- 6<&-
strace:
2939 openat(AT_FDCWD, "/proc", O_RDONLY|O_PATH) = 3
2939 eventfd2(0, EFD_CLOEXEC) = 4
2939 pipe2([5, 6], O_CLOEXEC) = 0
2939 clone(child_stack=NULL, flags=CLONE_NEWNS|CLONE_NEWUSER|SIGCHLD) = 2940
2940 read(4, <unfinished ...>
2939 read(5,
opt_userns_block_fd is the read end of setup_finished_pipe (descriptor 5). The parent blocks in its read (bubblewrap.c:3179) before writing child_wait_fd. The child blocks in its read of child_wait_fd.
A patched build checks descriptors with fcntl (fd, F_GETFD) during argument parsing. Both commands returned status 1:
bwrap: Invalid fd: 4: Bad file descriptor
bwrap: Invalid fd: 5: Bad file descriptor
- Lingua principale
- C
- Stelle
- 9.4k
- Fork
- 408
- Merge medio
- 6g 14h
- PR unite (30g)
- 1
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di containers/bubblewrap
-
README: writable --bind paths are not isolated from hardlinks created outside the sandboxForse già presa @sairex53 l’ha presa 24 giorni fa. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
containers/bubblewrap#813 · 3 commenti · 2 reazioni ·
I maintainer di solito rispondono entro 1 giorno
-
bubblewrap manpage is desynced from source codeForse già presa @huong8373tt-beep l’ha presa 4 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
containers/bubblewrap#767 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Related project comparisons in README.md are outdatedForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
containers/bubblewrap#743 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
containers/bubblewrap#298 · 4 commenti · 5 reazioni ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 42/100
containers/bubblewrap#819 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di containers/bubblewrap
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
I maintainer di solito rispondono entro 9 giorni
-
Vulkan: create_device reads the device extension list after freeing it (random crash at start)Aperta
Difficoltà 1/5 1-3 ore Idoneità per principianti 62/100
Revivedx/SavageWindRecomp#488 ·
I maintainer di solito rispondono entro 1 giorno
-
needs-device
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
feature/themes QA/No release-notes/exclude tests tests/missing-coverage tests/test-quality
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
brave/brave-browser#60971 ·
I maintainer di solito rispondono entro 1 giorno