postgres.git / summary / log / commit / refs

commit    88aa4a049acaaea4db2d7946154ae72110910f32
Author:   Michael Paquier <michael@paquier.xyz>
Date:     Mon Sep 04 05:55:51 2023 +0000
First released in: 17.0, 11.22, 12.17, 13.13, 14.10, 15.5, 16.0

    Fix out-of-bound read in gtsvector_picksplit()
    
    This could lead to an imprecise choice when splitting an index page of a
    GiST index on a tsvector, deciding which entries should remain on the
    old page and which entries should move to a new page.
    
    This is wrong since tsearch2 has been moved into core with commit
    140d4ebcb46e, so backpatch all the way down.  This error has been
    spotted by valgrind.
    
    Author: Alexander Lakhin
    Discussion: https://postgr.es/m/17950-6c80a8d2b94ec695@postgresql.org
    Backpatch-through: 11


src/backend/utils/adt/tsgistidx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend/utils/adt/tsgistidx.c b/src/backend/utils/adt/tsgistidx.c index b8fd96dd7b0..2c5617a47af 100644 --- a/src/backend/utils/adt/tsgistidx.c +++ b/src/backend/utils/adt/tsgistidx.c @@ -728,7 +728,7 @@ gtsvector_picksplit(PG_FUNCTION_ARGS) size_alpha = SIGLENBIT(siglen) - sizebitvec((cache[j].allistrue) ? GETSIGN(datum_l) : - GETSIGN(cache[j].sign), + cache[j].sign, siglen); } else @@ -742,7 +742,7 @@ gtsvector_picksplit(PG_FUNCTION_ARGS) size_beta = SIGLENBIT(siglen) - sizebitvec((cache[j].allistrue) ? GETSIGN(datum_r) : - GETSIGN(cache[j].sign), + cache[j].sign, siglen); } else [parent: 5a9325fdde1d]