bug: YAML parse error in config is silently swallowed, login overwrites all other contexts
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 76/100
Direzione di ricerca
Inizia da localconfig.go, intorno alla riga 103, e confronta come ReadLocalConfig e ReadLocalWatchConfig gestiscono gli errori di configUtil.UnmarshalLocalFile. Poi leggi config_test.go e aggiungi test per YAML non valido per entrambi i reader. Il lavoro è completato quando gli errori di parsing vengono restituiti invece di essere trattati come una configurazione vuota, mentre un file mancante continua a restituire nil, nil.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
A tab instead of spaces — or any YAML syntax error — in the config file causes ReadLocalConfig to return an empty config with no error, making every command behave as if the user has never logged in.
The dangerous part: login sees the empty config, treats it as a fresh install, and writes a brand-new file over it. Every other context, server, user and refresh token in the file is gone with no warning.
Root cause
localconfig.go line 103:
err = configUtil.UnmarshalLocalFile(path, &config)
if os.IsNotExist(err) {
return nil, nil
}
err = ValidateLocalConfig(config) // parse error is silently overwritten here
Only os.IsNotExist is handled. A YAML parse error falls through and gets immediately overwritten by ValidateLocalConfig. Same bug in ReadLocalWatchConfig.
To reproduce
- Put a tab on any indented line in
~/.config/microcks/config - Run
microcks context→ reports "no contexts defined" instead of a parse error - Run
microcks login <any-server>→ the file is truncated and rewritten. All previous contexts are gone.
Fix
if err != nil {
return nil, fmt.Errorf("reading config %s: %w", path, err)
}
Same in ReadLocalWatchConfig. After this, nil, nil keeps its only meaning — file doesn't exist — and fresh-install logic stays untouched.
There is no test for malformed input in config_test.go, which is how this went unnoticed.
- Lingua principale
- Go
- Stelle
- 58
- Fork
- 72
- Merge medio
- 1g 11h
- PR unite (30g)
- 27
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi 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 microcks/microcks-cli
-
Default configuration path falls back to the current directory when the home directory cannot be determinedForse già presa @Sarthak-Shreshtha01 l’ha presa 1 giorno fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
microcks/microcks-cli#583 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
microcks/microcks-cli#573 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
import-dir uploads secondary artifacts before their primary API definitionForse già presa @doraem-on l’ha presa 13 giorni fa. Apertacomponent/cli kind/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
microcks/microcks-cli#561 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
TEST: `ConnectAndGetToken` Returns Error on Non-200 ResponseForse già presa @aniket866 l’ha presa 16 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
microcks/microcks-cli#554 ·
I maintainer di solito rispondono entro 1 giorno
-
Empty `AuthToken` Causes Cryptic JWT Parse ErrorForse già presa @aniket866 l’ha presa 16 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
microcks/microcks-cli#551 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di microcks/microcks-cli
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
os: RawConn methods of a closed File return internal/poll.ErrFileClosing instead of ErrClosedAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: Bedrock invoke-with-response-stream reports `stop_reason: "end_turn"` for tool-use turnsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
oalders/clodhopper#162 ·
I maintainer di solito rispondono entro 1 giorno
-
component/server severity/minor type/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno