Skip to content

Commit 461f1ce

Browse files
authored
Fix validation of non-number keys in array validation (#118)
Closes #117 * Fix validation of non-number keys in array validation * Add test case
1 parent 597458c commit 461f1ce

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

avro_schema/frontend.lua

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -878,8 +878,11 @@ copy_data = function(stack, schema, data, visited)
878878
end
879879
end
880880
elseif schematype == 'array' then
881-
for i, v in ipairs(data) do
881+
for i, v in pairs(data) do
882882
stack.ptr[frame_no] = i
883+
if type(i) ~= 'number' then
884+
error('@Non-number array key', 0)
885+
end
883886
res[i] = copy_data(stack, schema.items, v, visited)
884887
end
885888
elseif schematype == 'map' then

test/ddt_suite/validate.lua

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,12 @@ t {
305305
validate_error = '6: Not a int: XXX'
306306
}
307307

308+
t {
309+
schema = array,
310+
validate = '{"key":"value"}',
311+
validate_error = 'key: Non-number array key'
312+
}
313+
308314
-- map
309315

310316
local map = '{"type":"map","values":"int"}'

0 commit comments

Comments
 (0)