Initialize padding bytes in btree_gist varbit support.
authorHeikki Linnakangas
Tue, 13 May 2014 11:16:28 +0000 (14:16 +0300)
committerHeikki Linnakangas
Tue, 13 May 2014 12:27:14 +0000 (15:27 +0300)
commitd5b912c905efd531a6228d08c98cd92d49cdd94c
tree5e90a778d6ac6f0bdcf1094e3de7a26ab18c6e6e
parentb65a258a512049eba567283d93bd63b22b77916a
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