Skip to content

Commit

Permalink
Add validation for metadata lengths.
Browse files Browse the repository at this point in the history
  • Loading branch information
bbassett-tibco committed Mar 1, 2023
1 parent 6f5cdaf commit 8d46c4c
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/metadata.c
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,11 @@ int sbdf_md_add(char const* name, sbdf_object const* value, sbdf_object const* d
return SBDF_ERROR_VALUETYPES_MUST_BE_EQUAL;
}

if (value->count != 1 || (default_value && default_value->count != 1))
{
return SBDF_ERROR_ARRAY_LENGTH_MUST_BE_1;
}

item = out->first;
prev = 0;

Expand Down
10 changes: 10 additions & 0 deletions src/tablemetadata.c
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,11 @@ int sbdf_read_metadata_values(FILE* in, sbdf_valuetype vt, sbdf_metadata* out)

if (v)
{
if (v != 1)
{
return SBDF_ERROR_ARRAY_LENGTH_MUST_BE_1;
}

if (error = sbdf_obj_read(in, vt, &value))
{
return error;
Expand All @@ -171,6 +176,11 @@ int sbdf_read_metadata_values(FILE* in, sbdf_valuetype vt, sbdf_metadata* out)

if (v)
{
if (v != 1)
{
return SBDF_ERROR_ARRAY_LENGTH_MUST_BE_1;
}

if (error = sbdf_obj_read(in, vt, &default_value))
{
sbdf_obj_destroy(value);
Expand Down
7 changes: 7 additions & 0 deletions tests/metadata_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,23 @@

using namespace sbdf;

double two_dblarr[] = { 1.0, 2.0 };

SBDF_TEST(metadata, add)
{
sbdf_metadata_head* t = 0;
obj pi = 3.14;
obj almost_pi = 3;
obj two = two_dblarr;

SBDF_CHECK(sbdf_md_create(&t), SBDF_OK);
SBDF_CHECK(sbdf_md_add("hello", pi, 0, t), SBDF_OK);
SBDF_ASSERT(!!t);
SBDF_CHECK(sbdf_md_add("hello", pi, 0, t), SBDF_ERROR_METADATA_ALREADY_EXISTS);
SBDF_CHECK(sbdf_md_add("goodbye", pi, 0, t), SBDF_OK);
SBDF_CHECK(sbdf_md_add("almost", pi, almost_pi, t), SBDF_ERROR_VALUETYPES_MUST_BE_EQUAL);
SBDF_CHECK(sbdf_md_add("two", two, 0, t), SBDF_ERROR_ARRAY_LENGTH_MUST_BE_1);
SBDF_CHECK(sbdf_md_add("two", pi, two, t), SBDF_ERROR_ARRAY_LENGTH_MUST_BE_1);
sbdf_md_destroy(t);
}

Expand Down

0 comments on commit 8d46c4c

Please sign in to comment.