api: paths that are not valid UTF-8 come back changed in JSON
Maintainer antworten meist innerhalb von 1 Tag
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 25/100
- Issue-Typ
- Feature
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- go, json
- Bereich
- api, backend-api-design
Rechercherichtung
The issue identifies Go's encoding/json behavior and says every endpoint that returns paths is affected, but it names no files or tests. Start by locating the API path fields and their JSON serialization, then review the open linked pull request #729 and its discussion. Done means agreeing on a wire format for non-UTF-8 paths, documenting it, and ensuring clients can round-trip the original path bytes.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Problem
A tree entry name may hold bytes that are not valid UTF-8 (git accepts any byte except NUL and /). The API returns such a path changed: Go's encoding/json writes each invalid byte as U+FFFD, so a<0xff>b comes back as "a\ufffdb". A client cannot send that path back (for example in grep paths, file?path=, blame?path=), because it no longer names the file. This affects every endpoint that returns paths. Main has the same behavior.
The grep cursor is not affected: it base64-encodes the raw path bytes, so paging still works.
Found
By the clean-context advisor on PR #585 (#583, newline paths in grep), 2026-10-28. The advisor checked the encoding/json behavior. I did not call the API with such a path.
Possible fix
Decide on a wire form for non-UTF-8 paths (for example, an extra base64 field next to path, as some git hosting APIs do), and document it. This is an API design decision.
Trigger
A user report of a path that cannot be read back, or the next API change that adds a path field.
Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high
- Vorherrschende Sprache
- Go
- Sterne
- 0
- Forks
- 0
- Ø Merge
- 6 Std. 16 Min.
- Gemergte PRs (30 T.)
- 243
Entwicklungsumgebung
- Enthält ein Dockerfile oder eine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus coder/openstorage
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
coder/openstorage#807 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 49/100
coder/openstorage#806 ·
Maintainer antworten meist innerhalb von 1 Tag
-
api: merge/preview ignores strategy, squash and allow_unrelated_historiesEvtl. vergeben @ThomasK33 hat das heute übernommen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
coder/openstorage#805 ·
Maintainer antworten meist innerhalb von 1 Tag
-
githttp: +import remote serves clone and fetch, and its pushes stay out of the normal branch listEvtl. vergeben @ThomasK33 hat das heute übernommen. Offen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 20/100
coder/openstorage#804 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
api: branches/create ignores expected_target_sha, so a guarded create or move can overwrite a branchEvtl. vergeben @ThomasK33 hat das heute übernommen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
coder/openstorage#803 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in coder/openstorage
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
coder/coder-logstream-kube#255 · 1 Kommentar ·
-
kind/features
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 73/100
TencentBlueKing/bk-nodemgr#3991 ·
Maintainer antworten meist innerhalb von 1 Tag
-
meta
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
last9/last9-mcp-server#554 ·
Maintainer antworten meist innerhalb von 1 Tag