File tree Expand file tree Collapse file tree 1 file changed +12
-3
lines changed Expand file tree Collapse file tree 1 file changed +12
-3
lines changed Original file line number Diff line number Diff line change @@ -100,7 +100,11 @@ jsonStatsInit(JsonStats data, const VariableStatData *vardata)
100
100
ATTSTATSSLOT_NUMBERS | ATTSTATSSLOT_VALUES ))
101
101
return false;
102
102
103
- /* XXX Not sure what this means / how could it happen? */
103
+ /*
104
+ * Valid JSON stats should have at least 2 elements in values:
105
+ * 0th - root path prefix
106
+ * 1st - root path stats
107
+ */
104
108
if (data -> attslot .nvalues < 2 )
105
109
{
106
110
free_attstatsslot (& data -> attslot );
@@ -115,9 +119,14 @@ jsonStatsInit(JsonStats data, const VariableStatData *vardata)
115
119
data -> values = data -> attslot .values ;
116
120
data -> nvalues = data -> attslot .nvalues ;
117
121
122
+ /* Extract root path prefix */
118
123
jb = DatumGetJsonbP (data -> values [0 ]);
119
- JsonbExtractScalar (& jb -> root , & prefix );
120
- Assert (prefix .type == jbvString );
124
+ if (!JsonbExtractScalar (& jb -> root , & prefix ) || prefix .type != jbvString )
125
+ {
126
+ free_attstatsslot (& data -> attslot );
127
+ return false;
128
+ }
129
+
121
130
data -> prefix = prefix .val .string .val ;
122
131
data -> prefixlen = prefix .val .string .len ;
123
132
You can’t perform that action at this time.
0 commit comments