]> Cypherpunks repositories - keks.git/commitdiff
Assertion success check
authorSergey Matveev <stargrave@stargrave.org>
Thu, 10 Apr 2025 07:04:44 +0000 (10:04 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Thu, 10 Apr 2025 07:04:44 +0000 (10:04 +0300)
go/schema/check.go

index d2c148acd2c657e607d6c9ce49a0449cff78136a33da3465c6d17e256cea199c..9b2669148a50f4bc96c04a05dcf5c73db42c425f65dd179da9d266196496b0c6 100644 (file)
@@ -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]}
                                }