Skip to content

Commit 0eddfba

Browse files
author
Maxim Orlov
committed
Fix varlena allocation to avoid garbage contents.
1 parent a904b36 commit 0eddfba

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

src/rum_ts_utils.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2271,7 +2271,8 @@ rum_ts_join_pos(PG_FUNCTION_ARGS)
22712271
count2 = count_pos(in2, VARSIZE_ANY_EXHDR(addInfo2)),
22722272
countRes = 0;
22732273
int i1 = 0, i2 = 0;
2274-
Size size;
2274+
Size size,
2275+
size_compressed;
22752276
WordEntryPos pos1 = 0,
22762277
pos2 = 0,
22772278
*pos;
@@ -2343,10 +2344,11 @@ rum_ts_join_pos(PG_FUNCTION_ARGS)
23432344
* uncompressed positions. So allocate memory with a margin.
23442345
*/
23452346
size = VARHDRSZ + 2 * sizeof(WordEntryPos) * countRes;
2346-
result = palloc(size);
2347+
result = palloc0(size);
23472348

2348-
size = compress_pos(result->vl_dat, pos, countRes) + VARHDRSZ;
2349-
SET_VARSIZE(result, size);
2349+
size_compressed = compress_pos(result->vl_dat, pos, countRes) + VARHDRSZ;
2350+
Assert(size >= size_compressed);
2351+
SET_VARSIZE(result, size_compressed);
23502352

23512353
PG_RETURN_BYTEA_P(result);
23522354
}

0 commit comments

Comments
 (0)