• Tom Lane's avatar
    Short-circuit slice requests that are for more than the object's size. · 063dd37e
    Tom Lane authored
    substring(), and perhaps other callers, isn't careful to pass a
    slice length that is no more than the datum's true size.  Since
    toast_decompress_datum_slice's children will palloc the requested
    slice length, this can waste memory.  Also, close study of the liblz4
    documentation suggests that it is dependent on the caller to not ask
    for more than the correct amount of decompressed data; this squares
    with observed misbehavior with liblz4 1.8.3.  Avoid these problems
    by switching to the normal full-decompression code path if the
    slice request is >= datum's decompressed size.
    
    Tom Lane and Dilip Kumar
    
    Discussion: https://postgr.es/m/507597.1616370729@sss.pgh.pa.us
    063dd37e
detoast.c 16.8 KB