Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Profile import fails with EOF error for valid .bpf files since v1.13.0

Aperta Adatta ai principianti
#99 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
68/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Tranquilla
Stack tecnologico
go
Ambito
backend

Direzione di ricerca

Inizia in common/varbin/data_if.go, su StubReader.ReadByte(), quindi esamina il contratto di io.Reader e la modifica a readString() citata nel commit 1af14a0. Riproduci il problema con un file .bpf valido generato esternamente e verifica che sia i profili generati esternamente sia quelli esportati dall’app vengano importati correttamente.

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

Descrizione

bug

Importing a valid .bpf profile file fails with "Failed to import profile from URL EOF" since sing-box for android v1.13.0. Files exported by the app itself import fine, but files generated externally (e.g. by a script using standard gzip) may fail, even though the binary format is identical and correct.

The root cause is in StubReader.ReadByte() (common/varbin/data_if.go) — it ignores the n return value from Read(), discarding a successfully read byte when Read() returns data together with EOF, which is valid per the io.Reader contract. Whether the bug triggers depends on the internal structure of the gzip stream produced by the encoder.

The issue was exposed by commit SagerNet/sing-box@1af14a0, which replaced io.ReadFull() with byte-by-byte ReadByte() in readString().

Fix: #98

Lingua principale
Go
Stelle
131
Fork
111
Merge medio
1h 42m
PR unite (30g)
1

Preparare l'ambiente

Non abbiamo ancora controllato i file di configurazione di questo progetto. Parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

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 SagerNet/sing

Tutte le issue di SagerNet/sing

Issue simili

Altre issue su Go

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.