vsh-table: Ensure NULL terminated arguments to vshTable*()

There are two functions that take variable arguments:
vshTableNew() and vshTableRowAppend(). Both expect the list of
arguments to be NULL terminated. Annotate them with
G_GNUC_NULL_TERMINATED to enable compile time check for this.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Michal Privoznik 2021-12-14 15:26:47 +01:00
parent 2ac0e4c347
commit 5ce184f33c
2 changed files with 6 additions and 4 deletions

View File

@ -33,7 +33,7 @@
static int
testVshTableNew(const void *opaque G_GNUC_UNUSED)
{
g_autoptr(vshTable) table = vshTableNew(NULL);
g_autoptr(vshTable) table = vshTableNew(NULL, NULL);
if (table) {
fprintf(stderr, "expected failure when passing null to vshTableNew\n");
@ -85,7 +85,7 @@ testVshTableRowAppend(const void *opaque G_GNUC_UNUSED)
if (!table)
return -1;
if (vshTableRowAppend(table, NULL) >= 0) {
if (vshTableRowAppend(table, NULL, NULL) >= 0) {
fprintf(stderr, "Appending NULL shouldn't work\n");
return -1;
}

View File

@ -29,10 +29,12 @@ vshTableFree(vshTable *table);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(vshTable, vshTableFree);
vshTable *
vshTableNew(const char *format, ...);
vshTableNew(const char *format, ...)
G_GNUC_NULL_TERMINATED;
int
vshTableRowAppend(vshTable *table, const char *arg, ...);
vshTableRowAppend(vshTable *table, const char *arg, ...)
G_GNUC_NULL_TERMINATED;
void
vshTablePrintToStdout(vshTable *table, vshControl *ctl);