summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeikki Linnakangas2021-01-18 12:48:43 +0000
committerHeikki Linnakangas2021-01-18 12:48:43 +0000
commit5d1e5c8b758770186b005a1c3888b05e37af79c5 (patch)
tree009d2b2d12ac2b7ab79b2d647d4a8e89106fc5a1
parent15251c0a60be76eedee74ac0e94b433f9acca5af (diff)
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.
-rw-r--r--contrib/pageinspect/gistfuncs.c12
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);
}