Selaa lähdekoodia

Only check access tokens if they are likely to be tokens (#16164)

* Only check access tokens if they are likely to be tokens

Gitea will currently check every if every password is an access token even though
most passwords are not and cannot be access tokens.

By creation access tokens are 40 byte hexadecimal strings therefore only these should
be checked.

Signed-off-by: Andrew Thornton <art27@cantab.net>
tags/v1.15.0-rc1
zeripath 3 vuotta sitten
vanhempi
commit
b8e4ce754e
No account linked to committer's email address
1 muutettua tiedostoa jossa 7 lisäystä ja 1 poistoa
  1. 7
    1
      models/token.go

+ 7
- 1
models/token.go Näytä tiedosto

@@ -57,9 +57,15 @@ func GetAccessTokenBySHA(token string) (*AccessToken, error) {
if token == "" {
return nil, ErrAccessTokenEmpty{}
}
if len(token) < 8 {
// A token is defined as being SHA1 sum these are 40 hexadecimal bytes long
if len(token) != 40 {
return nil, ErrAccessTokenNotExist{token}
}
for _, x := range []byte(token) {
if x < '0' || (x > '9' && x < 'a') || x > 'f' {
return nil, ErrAccessTokenNotExist{token}
}
}
var tokens []AccessToken
lastEight := token[len(token)-8:]
err := x.Table(&AccessToken{}).Where("token_last_eight = ?", lastEight).Find(&tokens)

Loading…
Peruuta
Tallenna