From b49660d40df22079d1c4089ee75e131046bd2fd3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?C=C3=A9dric=20Villemain?= Date: Fri, 12 Oct 2012 14:16:37 +0200 Subject: [PATCH] Add check for NULL input and regression test --- pgfincore.c | 7 ++++++- sql/pgfincore.ext.sql | 3 +++ sql/pgfincore.sql | 3 +++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/pgfincore.c b/pgfincore.c index 3bad687..9969a4c 100644 --- a/pgfincore.c +++ b/pgfincore.c @@ -642,7 +642,7 @@ pgfadvise_loader(PG_FUNCTION_ARGS) int segmentNumber = PG_GETARG_INT32(2); bool willneed = PG_GETARG_BOOL(3); bool dontneed = PG_GETARG_BOOL(4); - VarBit *databit = PG_GETARG_VARBIT_P(5); + VarBit *databit; /* our structure use to return values */ pgfloaderStruct *pgfloader; @@ -662,6 +662,11 @@ pgfadvise_loader(PG_FUNCTION_ARGS) Datum values[PGFADVISE_LOADER_COLS]; bool nulls[PGFADVISE_LOADER_COLS]; + if (PG_ARGISNULL(5)) + elog(ERROR, "pgfadvise_loader: databit argument shouldn't be NULL"); + else + databit = PG_GETARG_VARBIT_P(5); + /* initialize nulls array to build the tuple */ memset(nulls, 0, sizeof(nulls)); diff --git a/sql/pgfincore.ext.sql b/sql/pgfincore.ext.sql index 59cba7d..b45ad3b 100644 --- a/sql/pgfincore.ext.sql +++ b/sql/pgfincore.ext.sql @@ -23,6 +23,9 @@ select true from pgfadvise_loader('test', 0, true, true, B'1010'); select true from pgfadvise_loader('test', 0, true, false, B'1010'); select true from pgfadvise_loader('test', 0, false, true, B'1010'); select true from pgfadvise_loader('test', 0, false, false, B'1010'); +-- must not fail on NULL or empty +select true from pgfadvise_loader('test', 0, false, false, NULL); +select true from pgfadvise_loader('test', 0, false, false, B''); -- -- test pgfincore diff --git a/sql/pgfincore.sql b/sql/pgfincore.sql index 28e3d28..3f60bd9 100644 --- a/sql/pgfincore.sql +++ b/sql/pgfincore.sql @@ -27,6 +27,9 @@ select true from pgfadvise_loader('test', 0, true, true, B'1010'); select true from pgfadvise_loader('test', 0, true, false, B'1010'); select true from pgfadvise_loader('test', 0, false, true, B'1010'); select true from pgfadvise_loader('test', 0, false, false, B'1010'); +-- must not fail on NULL or empty +select true from pgfadvise_loader('test', 0, false, false, NULL); +select true from pgfadvise_loader('test', 0, false, false, B''); -- -- test pgfincore -- 2.39.5