Skip to content

Commit b8275bf

Browse files
committed
Fix registration tokens being able to be at 0 uses but unusuable
1 parent da49411 commit b8275bf

File tree

2 files changed

+11
-12
lines changed

2 files changed

+11
-12
lines changed

internal/data/registration.go

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,24 +32,23 @@ func (d *database) GetRegistrationToken(token string) (username, overwrites, sta
3232
return fmt.Errorf("no token")
3333
}
3434

35-
token, err := GetSMT[control.RegistrationResult](startingValue)
35+
token, err := Unmarshal[control.RegistrationResult](startingValue)
3636
if err != nil {
3737
return err
3838
}
3939

40-
if token.NumUses <= 0 {
41-
s.Del(tokenKey)
42-
return fmt.Errorf("key already used")
43-
}
44-
4540
token.NumUses--
4641

47-
value, err := ToString(token)
48-
if err != nil {
49-
return err
50-
}
42+
if token.NumUses > 0 {
43+
value, err := ToString(token)
44+
if err != nil {
45+
return err
46+
}
5147

52-
s.Put(tokenKey, value)
48+
s.Put(tokenKey, value)
49+
} else {
50+
s.Del(tokenKey)
51+
}
5352

5453
// this feels horribly wrong
5554
result = token

internal/data/typed_etcd.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func Get[T any](etcd *clientv3.Client, key string) (ret T, err error) {
6868
return
6969
}
7070

71-
func GetSMT[T any](value string) (ret T, err error) {
71+
func Unmarshal[T any](value string) (ret T, err error) {
7272
b := bytes.NewBufferString(value)
7373

7474
dec := safedecoder.Decoder(b)

0 commit comments

Comments
 (0)