From a86581ca2efe40bb6d4baa27ad1980c33cf78194 Mon Sep 17 00:00:00 2001 From: Erik Godding Boye Date: Tue, 3 Sep 2024 13:12:44 +0200 Subject: [PATCH 1/3] chore: make gosec linter happy --- pkg/zap/zap.go | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/pkg/zap/zap.go b/pkg/zap/zap.go index fd208c4..0bba85c 100644 --- a/pkg/zap/zap.go +++ b/pkg/zap/zap.go @@ -6,7 +6,6 @@ import ( "io" "reflect" "strconv" - "strings" "github.com/go-logr/logr" "github.com/go-logr/zapr" @@ -116,13 +115,6 @@ func newJSONEncoder(opts ...crzap.EncoderConfigOption) zapcore.Encoder { return zapcore.NewJSONEncoder(encoderConfig) } -var levelStrings = map[string]zapcore.Level{ - "debug": zap.DebugLevel, - "info": zap.InfoLevel, - "error": zap.ErrorLevel, - "panic": zap.PanicLevel, -} - func zapHook() mapstructure.DecodeHookFunc { return mapstructure.ComposeDecodeHookFunc( stringToLevelEnablerHookFunc(), @@ -140,27 +132,26 @@ func stringToLevelEnablerHookFunc() mapstructure.DecodeHookFuncType { sVal := val.(string) if sVal == "" { var v zapcore.LevelEnabler - // return nil if level is not set; controller-runtime sets the default value + // return nil if logLevel is not set; controller-runtime sets the default value return &v, nil } - // level supports setting of integer value > 0 in addition to `info`, `error` or `debug` - level, validLevel := levelStrings[strings.ToLower(sVal)] - if !validLevel { - logLevel, err := strconv.Atoi(sVal) + var logLevel zap.AtomicLevel + if err := logLevel.UnmarshalText([]byte(sVal)); err != nil { + iVal, err := strconv.Atoi(sVal) if err != nil { - return nil, fmt.Errorf("invalid log level \"%s\"", val) + return nil, fmt.Errorf("invalid log logLevel \"%s\"", val) } - if logLevel > 0 { - intLevel := -1 * logLevel - return zap.NewAtomicLevelAt(zapcore.Level(int8(intLevel))), nil - } else { - return nil, fmt.Errorf("invalid log level \"%s\"", val) + if iVal < int(zap.DebugLevel) || iVal > int(zap.FatalLevel) { + return nil, fmt.Errorf("invalid log logLevel \"%s\"", val) } + + // #nosec G115 + logLevel = zap.NewAtomicLevelAt(zapcore.Level(int8(-iVal))) } - return zap.NewAtomicLevelAt(level), nil + return logLevel, nil } } From 123b2f9591e16ef162eac232aae67418d9130d7e Mon Sep 17 00:00:00 2001 From: Erik Godding Boye Date: Tue, 3 Sep 2024 13:16:02 +0200 Subject: [PATCH 2/3] less change --- pkg/zap/zap.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/zap/zap.go b/pkg/zap/zap.go index 0bba85c..1ff5e1f 100644 --- a/pkg/zap/zap.go +++ b/pkg/zap/zap.go @@ -132,12 +132,13 @@ func stringToLevelEnablerHookFunc() mapstructure.DecodeHookFuncType { sVal := val.(string) if sVal == "" { var v zapcore.LevelEnabler - // return nil if logLevel is not set; controller-runtime sets the default value + // return nil if level is not set; controller-runtime sets the default value return &v, nil } var logLevel zap.AtomicLevel if err := logLevel.UnmarshalText([]byte(sVal)); err != nil { + // Level string not successfully parsed as a valid zap level string. Trying to parse int level. iVal, err := strconv.Atoi(sVal) if err != nil { return nil, fmt.Errorf("invalid log logLevel \"%s\"", val) From 77caf0ee41046d32c53df0108c4eb41440b357b8 Mon Sep 17 00:00:00 2001 From: Erik Godding Boye Date: Tue, 3 Sep 2024 13:20:07 +0200 Subject: [PATCH 3/3] better errors --- pkg/zap/zap.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/zap/zap.go b/pkg/zap/zap.go index 1ff5e1f..278a1e0 100644 --- a/pkg/zap/zap.go +++ b/pkg/zap/zap.go @@ -141,11 +141,11 @@ func stringToLevelEnablerHookFunc() mapstructure.DecodeHookFuncType { // Level string not successfully parsed as a valid zap level string. Trying to parse int level. iVal, err := strconv.Atoi(sVal) if err != nil { - return nil, fmt.Errorf("invalid log logLevel \"%s\"", val) + return nil, fmt.Errorf("invalid level value \"%s\"", val) } if iVal < int(zap.DebugLevel) || iVal > int(zap.FatalLevel) { - return nil, fmt.Errorf("invalid log logLevel \"%s\"", val) + return nil, fmt.Errorf("invalid level value \"%s\"", val) } // #nosec G115