diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2021-01-18 14:48:43 +0200 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2021-01-18 14:48:43 +0200 |
commit | 5d1e5c8b758770186b005a1c3888b05e37af79c5 (patch) | |
tree | 009d2b2d12ac2b7ab79b2d647d4a8e89106fc5a1 /contrib/pageinspect/gistfuncs.c | |
parent | 15251c0a60be76eedee74ac0e94b433f9acca5af (diff) | |
download | postgresql-5d1e5c8b758770186b005a1c3888b05e37af79c5.tar.gz postgresql-5d1e5c8b758770186b005a1c3888b05e37af79c5.zip |
Check for BuildIndexValueDescription returning NULL in gist_page_items
Per Coverity. BuildIndexValueDescription() cannot actually return NULL in
this instance, because it only returns NULL if the user doesn't have the
required privileges, and this function can only be used by superuser. But
better safe than sorry.
Diffstat (limited to 'contrib/pageinspect/gistfuncs.c')
-rw-r--r-- | contrib/pageinspect/gistfuncs.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/contrib/pageinspect/gistfuncs.c b/contrib/pageinspect/gistfuncs.c index 6e1ea04b346..d5da1ea839a 100644 --- a/contrib/pageinspect/gistfuncs.c +++ b/contrib/pageinspect/gistfuncs.c @@ -247,14 +247,20 @@ gist_page_items(PG_FUNCTION_ARGS) index_deform_tuple(itup, RelationGetDescr(indexRel), itup_values, itup_isnull); - key_desc = BuildIndexValueDescription(indexRel, itup_values, itup_isnull); - memset(nulls, 0, sizeof(nulls)); values[0] = DatumGetInt16(offset); values[1] = ItemPointerGetDatum(&itup->t_tid); values[2] = Int32GetDatum((int) IndexTupleSize(itup)); - values[3] = CStringGetTextDatum(key_desc); + + key_desc = BuildIndexValueDescription(indexRel, itup_values, itup_isnull); + if (key_desc) + values[3] = CStringGetTextDatum(key_desc); + else + { + values[3] = (Datum) 0; + nulls[3] = true; + } tuplestore_putvalues(tupstore, tupdesc, values, nulls); } |