Skip to content

Commit

Permalink
Test misplaced breaks
Browse files Browse the repository at this point in the history
  • Loading branch information
PJK committed Dec 28, 2022
1 parent 3baf4c2 commit f0c203b
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 5 deletions.
9 changes: 4 additions & 5 deletions src/cbor/internal/builder_callbacks.c
Original file line number Diff line number Diff line change
Expand Up @@ -347,14 +347,13 @@ void cbor_builder_map_start_callback(void *context, uint64_t size) {
bool _cbor_is_indefinite(cbor_item_t *item) {
switch (item->type) {
case CBOR_TYPE_BYTESTRING:
return item->metadata.bytestring_metadata.type ==
_CBOR_METADATA_INDEFINITE;
return cbor_bytestring_is_indefinite(item);
case CBOR_TYPE_STRING:
return item->metadata.string_metadata.type == _CBOR_METADATA_INDEFINITE;
return cbor_string_is_indefinite(item);
case CBOR_TYPE_ARRAY:
return item->metadata.array_metadata.type == _CBOR_METADATA_INDEFINITE;
return cbor_array_is_indefinite(item);
case CBOR_TYPE_MAP:
return item->metadata.map_metadata.type == _CBOR_METADATA_INDEFINITE;
return cbor_map_is_indefinite(item);
default:
return false;
}
Expand Down
12 changes: 12 additions & 0 deletions test/callbacks_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,17 @@ static void test_append_map_failure(void** _CBOR_UNUSED(_state)) {
_cbor_stack_pop(&stack);
}

// Size 1 array start, but we get an indef break
unsigned char invalid_indef_break_data[] = {0x81, 0xFF};
static void test_invalid_indef_break(void** _CBOR_UNUSED(_state)) {
struct cbor_load_result res;
cbor_item_t* item = cbor_load(invalid_indef_break_data, 2, &res);

assert_null(item);
assert_int_equal(res.read, 2);
assert_true(res.error.code == CBOR_ERR_SYNTAXERROR);
}

int main(void) {
const struct CMUnitTest tests[] = {
cmocka_unit_test(test_default_callbacks),
Expand All @@ -381,6 +392,7 @@ int main(void) {
test_builder_string_callback_append_parent_alloc_failure),
cmocka_unit_test(test_append_array_failure),
cmocka_unit_test(test_append_map_failure),
cmocka_unit_test(test_invalid_indef_break),
};

cmocka_run_group_tests(tests, NULL, NULL);
Expand Down

0 comments on commit f0c203b

Please sign in to comment.