Skip to content

Commit b6d9c9f

Browse files
committed
validate user input for log level
Signed-off-by: hfuss <hayden.fuss@kaleido.io>
1 parent ee2c8e6 commit b6d9c9f

2 files changed

Lines changed: 14 additions & 2 deletions

File tree

pkg/ffapi/apiserver.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,19 @@ func (as *apiServer[T]) loggingSettingsHandler(_ http.ResponseWriter, req *http.
402402
}
403403
logLevel := req.URL.Query().Get("level")
404404
if logLevel != "" {
405-
log.L(log.WithLogFieldsMap(req.Context(), map[string]string{"new_level": logLevel})).Warn("changing log level", logLevel)
405+
l := log.L(log.WithLogFieldsMap(req.Context(), map[string]string{"new_level": logLevel}))
406+
switch strings.ToLower(logLevel) {
407+
case "error":
408+
case "debug":
409+
case "trace":
410+
case "info":
411+
case "warn":
412+
// noop - all valid levels
413+
default:
414+
l.Warn("invalid log level")
415+
return http.StatusBadRequest, i18n.NewError(req.Context(), i18n.MsgInvalidLogLevel, logLevel)
416+
}
417+
l.Warn("changing log level", logLevel)
406418
log.SetLevel(logLevel)
407419
}
408420

pkg/i18n/en_base_error_messages.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,5 +191,5 @@ var (
191191
MsgNonExistDefaultAPIVersion = ffe("FF00254", "Default version '%s' does not exist")
192192
MsgRoutePathNotStartWithSlash = ffe("FF00255", "Route path '%s' must not start with '/'")
193193
MsgMethodNotAllowed = ffe("FF00256", "Method not allowed", http.StatusMethodNotAllowed)
194-
MsgMissingLogLevel = ffe("FF00257", "Missing log level", http.StatusBadRequest)
194+
MsgInvalidLogLevel = ffe("FF00257", "Invalid log level: '%s'", http.StatusBadRequest)
195195
)

0 commit comments

Comments
 (0)