Skip to content

Commit 3826358

Browse files
committed
Fix secret not being checked for secret-optional commands
1 parent c3d91ff commit 3826358

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

api/main.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -293,24 +293,26 @@ func handleRequestInner(spec RouteSpec, w http.ResponseWriter, r *http.Request,
293293
}
294294
}
295295

296+
// Sometimes it's a pointer, sometimes it's not??
297+
// Motd is, but pinfo isn't... strange. Whatever
298+
if req.Kind() == reflect.Ptr {
299+
req = req.Elem()
300+
}
301+
296302
validSecret := false
297303

298-
if spec.RequiresSecret {
299-
// We know the field exists
300-
secretField := req.FieldByName("Secret")
304+
secretField := req.FieldByName("Secret")
305+
306+
if secretField.IsValid() {
301307
secret := secretField.String()
302308

303309
if apiSecret != "" && secret == apiSecret {
304310
validSecret = true
305-
} else {
306-
return nil, http.StatusForbidden, ErrInvalidSecret
307311
}
308312
}
309313

310-
// Sometimes it's a pointer, sometimes it's not??
311-
// Motd is, but pinfo isn't... strange. Whatever
312-
if req.Kind() == reflect.Ptr {
313-
req = req.Elem()
314+
if spec.RequiresSecret && !validSecret {
315+
return nil, http.StatusForbidden, ErrInvalidSecret
314316
}
315317

316318
return spec.Exec(req.Interface(), validSecret, r)

0 commit comments

Comments
 (0)