]> granicus.if.org Git - postgresql/commit
Fix miscalculation of itemsafter in array_set_slice().
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 17 Jan 2011 17:38:52 +0000 (12:38 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 17 Jan 2011 17:41:01 +0000 (12:41 -0500)
commit2a0abe10f3899d5b802f9df6a7ceffc72f513f16
treee6df2af5bc5ccd6ca61eb7eb5b4ac761b378548f
parentebbf741d5d449f6fdc1983aca54d1f232d866b16
Fix miscalculation of itemsafter in array_set_slice().

If the slice to be assigned to was before the existing array lower bound
(requiring at least one null element to spring into existence to fill the
gap), the code miscalculated how many entries needed to be copied from
the old array's null bitmap.  This could result in trashing the array's
data area (as seen in bug #5840 from Karsten Loesing), or worse.

This has been broken since we first allowed the behavior of assigning to
non-adjacent slices, in 8.2.  Back-patch to all affected versions.
src/backend/utils/adt/arrayfuncs.c