Skip to content

Commit 3717270

Browse files
committed
Fix token overwrite bug
1 parent 0f3c430 commit 3717270

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

db.go

+10-10
Original file line numberDiff line numberDiff line change
@@ -184,15 +184,15 @@ func (d *ZerodropDB) List(token string) ([]*ZerodropEntry, error) {
184184

185185
// Update adds an entry to the database.
186186
func (d *ZerodropDB) Update(entry *ZerodropEntry, claims *AdminClaims) error {
187-
if !claims.Admin {
188-
// Validate token if exists
189-
var token string
190-
err := d.UpdateCheckTokenStmt.QueryRow(entry.Name).Scan(&token)
191-
if err == nil {
192-
if token != claims.Token {
193-
return ErrNotAuthorized
194-
}
195-
}
187+
var token string
188+
189+
err := d.UpdateCheckTokenStmt.QueryRow(entry.Name).Scan(&token)
190+
if err != nil {
191+
// The entry does not exist.
192+
token = claims.Token
193+
} else if !claims.Admin && token != claims.Token {
194+
// The entry exists and the tokens do not match.
195+
return ErrNotAuthorized
196196
}
197197

198198
var buffer bytes.Buffer
@@ -201,7 +201,7 @@ func (d *ZerodropDB) Update(entry *ZerodropEntry, claims *AdminClaims) error {
201201
return err
202202
}
203203

204-
if _, err := d.AdminUpdateStmt.Exec(entry.Name, claims.Token, entry.Creation.Unix(), buffer.Bytes()); err != nil {
204+
if _, err := d.AdminUpdateStmt.Exec(entry.Name, token, entry.Creation.Unix(), buffer.Bytes()); err != nil {
205205
return err
206206
}
207207

0 commit comments

Comments
 (0)