X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=t%2Fcore%2Fdata_test.c;h=261d5fd5a08ef9c60eb15eaf175897aeb27ed7fa;hp=420ee851bd38587f3168981393df54b154c0d7a8;hb=3ba81224dac4d31ea5ad651db569543825ea5078;hpb=e990840022affb61add5682b7a60ba6dba89fbf2 diff --git a/t/core/data_test.c b/t/core/data_test.c index 420ee85..261d5fd 100644 --- a/t/core/data_test.c +++ b/t/core/data_test.c @@ -154,16 +154,31 @@ START_TEST(test_format) for (i = 0; i < SDB_STATIC_ARRAY_LEN(golden_data); ++i) { sdb_data_t *datum = &golden_data[i].datum; - char buf[sdb_data_strlen(datum) + 1]; + char buf[sdb_data_strlen(datum) + 2]; int check; - check = sdb_data_format(datum, buf, sizeof(buf)); - fail_unless(! check, - "sdb_data_format(type=%s) = %d; expected: 0", + memset(buf, (int)'A', sizeof(buf)); + + check = sdb_data_format(datum, buf, sizeof(buf) - 1, + SDB_DOUBLE_QUOTED); + fail_unless(check > 0, + "sdb_data_format(type=%s) = %d; expected: >0", SDB_TYPE_TO_STRING(datum->type), check); fail_unless(! strcmp(buf, golden_data[i].expected), "sdb_data_format(type=%s) used wrong format: %s; expected: %s", SDB_TYPE_TO_STRING(datum->type), buf, golden_data[i].expected); + + fail_unless((size_t)check <= sizeof(buf) - 2, + "sdb_data_format(type=%s) wrote %d bytes; " + "expected <= %zu based on sdb_data_strlen()", + SDB_TYPE_TO_STRING(datum->type), check, sizeof(buf) - 2); + + fail_unless(buf[sizeof(buf) - 2] == '\0', + "sdb_data_format(type=%s) did not nul-terminate the buffer", + SDB_TYPE_TO_STRING(datum->type)); + fail_unless(buf[sizeof(buf) - 1] == 'A', + "sdb_data_format(type=%s) wrote past the end of the buffer", + SDB_TYPE_TO_STRING(datum->type)); } } END_TEST