From 345fdf25a6b2204f4a096ba38e80869a4e6e297d8e0b204b31ae8fb185c54505 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Thu, 10 Apr 2025 10:04:44 +0300 Subject: [PATCH] Assertion success check --- go/schema/check.go | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) 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]} } -- 2.48.1