• Tom Lane's avatar
    Avoid integer overflow while sifting-up a heap in tuplesort.c. · 512f67c8
    Tom Lane authored
    If the number of tuples in the heap exceeds approximately INT_MAX/2,
    this loop's calculation "2*i+1" could overflow, resulting in a crash.
    Fix it by using unsigned int rather than int for the relevant local
    variables; that shouldn't cost anything extra on any popular hardware.
    Per bug #14722 from Sergey Koposov.
    
    Original patch by Sergey Koposov, modified by me per a suggestion
    from Heikki Linnakangas to use unsigned int not int64.
    
    Back-patch to 9.4, where tuplesort.c grew the ability to sort as many
    as INT_MAX tuples in-memory (commit 263865a4).
    
    Discussion: https://postgr.es/m/20170629161637.1478.93109@wrigleys.postgresql.org
    512f67c8
tuplesort.c 136 KB