summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancis Lavoie <lavofr@gmail.com>2023-02-22 13:39:40 -0500
committerGitHub <noreply@github.com>2023-02-22 11:39:40 -0700
commit79de6df93d0404790c3bfecfefa9e1458ffcff75 (patch)
treeb4056129957e9faaeecebe6e01f3a4101130d862
parent8bc05e598da0068358a2876c45f92f2c77455341 (diff)
cmd: Strict unmarshal for validate (#5383)
-rw-r--r--caddy.go2
-rw-r--r--cmd/commandfuncs.go4
-rw-r--r--context.go2
-rw-r--r--modules.go4
4 files changed, 6 insertions, 6 deletions
diff --git a/caddy.go b/caddy.go
index 5d0152a..84cfc11 100644
--- a/caddy.go
+++ b/caddy.go
@@ -314,7 +314,7 @@ func unsyncedDecodeAndRun(cfgJSON []byte, allowPersist bool) error {
strippedCfgJSON := RemoveMetaFields(cfgJSON)
var newCfg *Config
- err := strictUnmarshalJSON(strippedCfgJSON, &newCfg)
+ err := StrictUnmarshalJSON(strippedCfgJSON, &newCfg)
if err != nil {
return err
}
diff --git a/cmd/commandfuncs.go b/cmd/commandfuncs.go
index 62afae2..cc5666b 100644
--- a/cmd/commandfuncs.go
+++ b/cmd/commandfuncs.go
@@ -490,7 +490,7 @@ func cmdAdaptConfig(fl Flags) (int, error) {
// validate output if requested
if adaptCmdValidateFlag {
var cfg *caddy.Config
- err = json.Unmarshal(adaptedConfig, &cfg)
+ err = caddy.StrictUnmarshalJSON(adaptedConfig, &cfg)
if err != nil {
return caddy.ExitCodeFailedStartup, fmt.Errorf("decoding config: %v", err)
}
@@ -523,7 +523,7 @@ func cmdValidateConfig(fl Flags) (int, error) {
input = caddy.RemoveMetaFields(input)
var cfg *caddy.Config
- err = json.Unmarshal(input, &cfg)
+ err = caddy.StrictUnmarshalJSON(input, &cfg)
if err != nil {
return caddy.ExitCodeFailedStartup, fmt.Errorf("decoding config: %v", err)
}
diff --git a/context.go b/context.go
index 330bfa6..c585aa5 100644
--- a/context.go
+++ b/context.go
@@ -326,7 +326,7 @@ func (ctx Context) LoadModuleByID(id string, rawMsg json.RawMessage) (any, error
// fill in its config only if there is a config to fill in
if len(rawMsg) > 0 {
- err := strictUnmarshalJSON(rawMsg, &val)
+ err := StrictUnmarshalJSON(rawMsg, &val)
if err != nil {
return nil, fmt.Errorf("decoding module config: %s: %v", modInfo, err)
}
diff --git a/modules.go b/modules.go
index e83bc74..470c25e 100644
--- a/modules.go
+++ b/modules.go
@@ -333,11 +333,11 @@ func ParseStructTag(tag string) (map[string]string, error) {
return results, nil
}
-// strictUnmarshalJSON is like json.Unmarshal but returns an error
+// StrictUnmarshalJSON is like json.Unmarshal but returns an error
// if any of the fields are unrecognized. Useful when decoding
// module configurations, where you want to be more sure they're
// correct.
-func strictUnmarshalJSON(data []byte, v any) error {
+func StrictUnmarshalJSON(data []byte, v any) error {
dec := json.NewDecoder(bytes.NewReader(data))
dec.DisallowUnknownFields()
return dec.Decode(v)