Initialize padding bytes in btree_gist varbit support.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Tue, 13 May 2014 11:16:28 +0000 (14:16 +0300)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Tue, 13 May 2014 12:27:28 +0000 (15:27 +0300)
commit1913d0f28d6ad1ccebba1035e7c319b1ff4a8b02
tree789fd815fb5361d82d34200229712b2efb568311
parentc2a4bb3ded75b92c3f92dfff0772f50726c77c6a
Initialize padding bytes in btree_gist varbit support.

The code expands a varbit gist leaf key to a node key by copying the bit
data twice in a varlen datum, as both the lower and upper key. The lower key
was expanded to INTALIGN size, but the padding bytes were not initialized.
That's a problem because when the lower/upper keys are compared, the padding
bytes are used compared too, when the values are otherwise equal. That could
lead to incorrect query results.

REINDEX is advised for any btree_gist indexes on bit or bit varying data
type, to fix any garbage padding bytes on disk.

Per Valgrind, reported by Andres Freund. Backpatch to all supported
versions.
contrib/btree_gist/btree_bit.c