In array_position()/array_positions(), beware of empty input array.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 4 May 2023 15:48:23 +0000 (11:48 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 4 May 2023 15:48:23 +0000 (11:48 -0400)
commitccb479e76ac3032ef942f5d4f6a3ab742c2db03e
tree79d94e751fec96edcde03680410b260f38b03271
parentb7001c6b6a776ecff38cb1b40ce10a9d190fc1fc
In array_position()/array_positions(), beware of empty input array.

These functions incautiously fetched the array's first lower bound
even when the array is zero-dimensional, thus fetching the word
after the allocated array space.  While almost always harmless,
with very bad luck this could result in SIGSEGV.  Fix by adding
an early exit for empty input.

Per bug #17920 from Alexander Lakhin.

Discussion: https://postgr.es/m/17920-f7c228c627b6d02e%40postgresql.org
src/backend/utils/adt/array_userfuncs.c