Don't read fields of a misaligned ExpandedObjectHeader or AnyArrayType.
authorNoah Misch <[email protected]>
Mon, 1 Jul 2019 00:34:17 +0000 (17:34 -0700)
committerNoah Misch <[email protected]>
Mon, 1 Jul 2019 00:34:20 +0000 (17:34 -0700)
commit2938aa2a5b1cebb41f9e54c1ea289c286139c21e
tree339a14300401b3bbdfd38c9024f63631edb07261
parent793eb94e31387738c72a8d7d702a6aecc9c5edee
Don't read fields of a misaligned ExpandedObjectHeader or AnyArrayType.

UBSan complains about this.  Instead, cast to a suitable type requiring
only 4-byte alignment.  DatumGetAnyArrayP() already assumes one can cast
between AnyArrayType and ArrayType, so this doesn't introduce a new
assumption.  Back-patch to 9.5, where AnyArrayType was introduced.

Reviewed by Tom Lane.

Discussion: https://postgr.es/m/20190629210334[email protected]
src/backend/utils/adt/arrayfuncs.c
src/include/utils/array.h
src/include/utils/arrayaccess.h
src/include/utils/expandeddatum.h