Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
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 /contrib/pageinspect/gistfuncs.c
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.
Diffstat (limited to 'contrib/pageinspect/gistfuncs.c')
-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);
}