Error() methods modify the request URL of the response they wrap
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 30/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- À l'abandon
- Stack technique
- go
- Domaine
- backend-api-design
Piste de recherche
The issue identifies sanitizeURL in github/github.go and the Error() methods that pass it request URLs. Start by reading sanitizeURL and inspect the existing tests for these error types. Done means formatting the errors leaves the original URL unchanged, with a test covering that behavior; a linked pull request is already open.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
sanitizeURL in github/github.go updates uri.RawQuery on the *url.URL it receives. ErrorResponse.Error(), RateLimitError.Error(), AbuseRateLimitError.Error() and RedirectionError.Error() pass it r.Response.Request.URL (and r.Location) directly, so just formatting the error rewrites the caller's request URL.
u, _ := url.Parse("https://api.github.com/x?access_token=secret")
e := &github.ErrorResponse{Response: &http.Response{Request: &http.Request{Method: "GET", URL: u}, StatusCode: 404}}
_ = e.Error()
fmt.Println(u) // https://api.github.com/x?access_token=REDACTED
Effects:
- After an error is logged,
resp.Request.URLno longer holds the URL that was sent, so code that reads or reuses it (for example to retry) getsREDACTEDvalues. - Calling
Error()on the same error from two goroutines is a data race, because a "read-only" method writes to shared state.
Proposed fix: have sanitizeURL redact a copy of the URL and leave the input alone, plus a test that checks the input is unchanged.
I'm planning to work on this and send a PR, if it can be assigned to me.
AI disclosure: an AI tool helped find this and write this issue.
- Langage dominant
- Go
- Étoiles
- 11.3k
- Forks
- 2.6k
- Merge moyen
- 2 j 8 h
- PR mergées (30 j)
- 38
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de google/go-github
-
Rate-limit retry replays a consumed request body for POST/PUT/PATCHPeut-être pris @AdamMagued l’a pris il y a 2 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 70/100
google/go-github#4656 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
otel: redact sensitive query parameters before recording http.urlPeut-être pris @sai5880 l’a pris il y a 2 jours. Ouverte
Difficulté 4/5 1-2 jours Accessibilité débutants 55/100
Les mainteneurs répondent en général sous 1 jour
-
Discuss the future of this repoOuverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 5/100
google/go-github#4636 · 11 commentaires · 3 réactions ·
Les mainteneurs répondent en général sous 1 jour
-
http.Client.Timeout is ignored by redirect-aware requestsPeut-être pris @sb123sb123 l’a pris il y a 32 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
Add Copilot content exclusion set/get enterprise and org set endpointsPeut-être pris @Tens1des l’a pris il y a 46 jours. Ouverte
google/go-github#4526 · 1 commentaire · 1 réaction · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de google/go-github
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
FiloSottile/age#758 ·
-
nginx configOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Les mainteneurs répondent en général sous 2 jours
-
fix: the buttons mock cannot take back the match point -- its undo looks only for the running matchOuvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
stuttgart-things/zaehlwerk#168 ·
Les mainteneurs répondent en général sous 1 jour