From: Sergey Matveev Date: Thu, 10 Apr 2025 07:04:44 +0000 (+0300) Subject: Assertion success check X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=345fdf25a6b2204f4a096ba38e80869a4e6e297d8e0b204b31ae8fb185c54505;p=keks.git Assertion success check --- diff --git a/go/schema/check.go b/go/schema/check.go index d2c148a..9b26691 100644 --- a/go/schema/check.go +++ b/go/schema/check.go @@ -140,7 +140,17 @@ func Check(schemaName string, schemas map[string][][]any, data any) error { if k == "." { vs = []any{data} } else { - m := data.(map[string]any) + var m map[string]any + m, ok = data.(map[string]any) + if !ok { + return &SchemaErr{BaseErr: BaseErr{ + SchemaName: schemaName, + CmdIdx: cmdIdx, + CmdName: cmdName, + Msg: "non map", + Data: data, + }} + } v, exists := m[k] if !exists { vs = nil @@ -150,7 +160,17 @@ func Check(schemaName string, schemas map[string][][]any, data any) error { } case uint64: taken = strconv.FormatUint(k, 10) - l := data.([]any) + var l []any + l, ok = data.([]any) + if !ok { + return &SchemaErr{BaseErr: BaseErr{ + SchemaName: schemaName, + CmdIdx: cmdIdx, + CmdName: cmdName, + Msg: "non list", + Data: data, + }} + } if int(k) < len(l) { vs = []any{l[k]} }