aboutsummaryrefslogtreecommitdiff
path: root/contrib/ltree/_ltree_gist.c
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2016-03-08 14:59:29 -0800
committerAndres Freund <andres@anarazel.de>2016-03-08 14:59:29 -0800
commit814570418d5e6bccb766efbe86d27aef206e5511 (patch)
tree5d3ddc0bcc82f3eda90d359f140abbd89ef4d47a /contrib/ltree/_ltree_gist.c
parentc5f1fbbfb51d852f0e9a1143dae9faa5186c1b2d (diff)
downloadpostgresql-814570418d5e6bccb766efbe86d27aef206e5511.tar.gz
postgresql-814570418d5e6bccb766efbe86d27aef206e5511.zip
ltree: Zero padding bytes when allocating memory for externally visible data.
ltree/ltree_gist/ltxtquery's headers stores data at MAXALIGN alignment, requiring some padding bytes. So far we left these uninitialized. Zero those by using palloc0. Author: Andres Freund Reported-By: Andres Freund / valgrind / buildarm animal skink Backpatch: 9.1-
Diffstat (limited to 'contrib/ltree/_ltree_gist.c')
-rw-r--r--contrib/ltree/_ltree_gist.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/contrib/ltree/_ltree_gist.c b/contrib/ltree/_ltree_gist.c
index c1f509ed8b1..bb08b0d3e00 100644
--- a/contrib/ltree/_ltree_gist.c
+++ b/contrib/ltree/_ltree_gist.c
@@ -97,7 +97,7 @@ _ltree_compress(PG_FUNCTION_ARGS)
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
errmsg("array must not contain nulls")));
- key = (ltree_gist *) palloc(len);
+ key = (ltree_gist *) palloc0(len);
SET_VARSIZE(key, len);
key->flag = 0;
@@ -128,7 +128,7 @@ _ltree_compress(PG_FUNCTION_ARGS)
PG_RETURN_POINTER(retval);
}
len = LTG_HDRSIZE;
- key = (ltree_gist *) palloc(len);
+ key = (ltree_gist *) palloc0(len);
SET_VARSIZE(key, len);
key->flag = LTG_ALLTRUE;
@@ -208,7 +208,7 @@ _ltree_union(PG_FUNCTION_ARGS)
}
len = LTG_HDRSIZE + ((flag & LTG_ALLTRUE) ? 0 : ASIGLEN);
- result = (ltree_gist *) palloc(len);
+ result = (ltree_gist *) palloc0(len);
SET_VARSIZE(result, len);
result->flag = flag;
if (!LTG_ISALLTRUE(result))
@@ -345,26 +345,26 @@ _ltree_picksplit(PG_FUNCTION_ARGS)
/* form initial .. */
if (LTG_ISALLTRUE(GETENTRY(entryvec, seed_1)))
{
- datum_l = (ltree_gist *) palloc(LTG_HDRSIZE);
+ datum_l = (ltree_gist *) palloc0(LTG_HDRSIZE);
SET_VARSIZE(datum_l, LTG_HDRSIZE);
datum_l->flag = LTG_ALLTRUE;
}
else
{
- datum_l = (ltree_gist *) palloc(LTG_HDRSIZE + ASIGLEN);
+ datum_l = (ltree_gist *) palloc0(LTG_HDRSIZE + ASIGLEN);
SET_VARSIZE(datum_l, LTG_HDRSIZE + ASIGLEN);
datum_l->flag = 0;
memcpy((void *) LTG_SIGN(datum_l), (void *) LTG_SIGN(GETENTRY(entryvec, seed_1)), sizeof(ABITVEC));
}
if (LTG_ISALLTRUE(GETENTRY(entryvec, seed_2)))
{
- datum_r = (ltree_gist *) palloc(LTG_HDRSIZE);
+ datum_r = (ltree_gist *) palloc0(LTG_HDRSIZE);
SET_VARSIZE(datum_r, LTG_HDRSIZE);
datum_r->flag = LTG_ALLTRUE;
}
else
{
- datum_r = (ltree_gist *) palloc(LTG_HDRSIZE + ASIGLEN);
+ datum_r = (ltree_gist *) palloc0(LTG_HDRSIZE + ASIGLEN);
SET_VARSIZE(datum_r, LTG_HDRSIZE + ASIGLEN);
datum_r->flag = 0;
memcpy((void *) LTG_SIGN(datum_r), (void *) LTG_SIGN(GETENTRY(entryvec, seed_2)), sizeof(ABITVEC));