fix(api): add nil guard in volume mount response conversion
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 88/100
Direzione di ricerca
Inizia in packages/api/internal/handlers/sandboxes_list.go, in convertFromDBMountsToAPIMounts, quindi esamina i casi correlati in packages/api/internal/handlers/volume_util_test.go. Esegui i test dell’handler e aggiungi la copertura per un elemento mount nil. Il lavoro è completato quando un input sparso non causa più panic e le voci nil vengono omesse dalla risposta dell’API.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
In packages/api/internal/handlers/sandboxes_list.go, convertFromDBMountsToAPIMounts converts database volume mount slice items into API response structs (api.SandboxVolumeMount). If the input slice contains a nil element (e.g. unmarshaled from JSONB payloads containing sparse/null entries), accessing item.Name or item.Path triggers a nil pointer dereference panic, failing the active HTTP request goroutine for sandbox GET/LIST endpoints.
Root Cause
convertFromDBMountsToAPIMounts iterated directly over mounts without checking if item == nil.
| Setting / Factor | Current Value / State | Intended / Expected |
|---|---|---|
| File / Component | packages/api/internal/handlers/sandboxes_list.go:L346-L359 |
Defensive nil element guard |
| Behavior | item.Name dereference panics on nil item |
Skip nil items safely |
Reproduction Steps
- Invoke
convertFromDBMountsToAPIMounts([]*dbtypes.SandboxVolumeMountConfig{nil}). - Observed result: Nil pointer dereference panic.
- Expected result: Skips
nilitem, returns empty slice pointer.
mounts := []*dbtypes.SandboxVolumeMountConfig{nil}
res := convertFromDBMountsToAPIMounts(mounts) // panics on item.Name
Technical Context
- Files affected:
packages/api/internal/handlers/sandboxes_list.go,packages/api/internal/handlers/volume_util_test.go - Subsystem: Control Plane API
- Impact: Low/Medium (Defensive nil safety)
Proposed Changes
| # | Change | File(s) Affected | Complexity |
|---|---|---|---|
| 1 | Add if item == nil { continue } guard in convertFromDBMountsToAPIMounts |
sandboxes_list.go |
Low |
| 2 | Add unit tests in volume_util_test.go |
volume_util_test.go |
Low |
- Lingua principale
- Go
- Stelle
- 1.6k
- Fork
- 438
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
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 e2b-dev/runtime
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
-
sandbox cache: StartRemoving state transition not broadcast, all allocations see stale Running state Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 86/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
Tutte le issue di e2b-dev/runtime
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 84/100
-
enhancement needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
kind/cleanup
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
kubernetes-sigs/kueue#15947 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
sympozium-ai/sympozium#627 ·