]> granicus.if.org Git - postgresql/commitdiff
Fix a second cause of undersized pallocs for btree_gist indexes on macaddr.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 16 May 2014 19:18:09 +0000 (15:18 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 16 May 2014 19:18:09 +0000 (15:18 -0400)
gbt_macad_union also allocated 12-byte structs where we really need 16.

Per report from Andres Freund.  No back-patch since there's no current
risk of a real problem.

contrib/btree_gist/btree_macaddr.c

index 244b95154bb7b7e137420755071d505a5c4653c4..ed58a1b7429b31493c8466ab31db87ef648477c0 100644 (file)
@@ -12,6 +12,7 @@ typedef struct
 {
        macaddr         lower;
        macaddr         upper;
+       char            pad[4];                 /* make struct size = sizeof(gbtreekey16) */
 } macKEY;
 
 /*
@@ -143,7 +144,7 @@ Datum
 gbt_macad_union(PG_FUNCTION_ARGS)
 {
        GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
-       void       *out = palloc(sizeof(macKEY));
+       void       *out = palloc0(sizeof(macKEY));
 
        *(int *) PG_GETARG_POINTER(1) = sizeof(macKEY);
        PG_RETURN_POINTER(gbt_num_union((void *) out, entryvec, &tinfo));