Re: BUG #17300: Server crashes on deserializing text multirange

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Alexander Korotkov <aekorotkov@gmail.com>, Paul A Jungwirth <pj@illuminatedcomputing.com>
Cc: exclusion@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2021-12-01T22:39:55Z
Lists: pgsql-bugs
PG Bug reporting form <noreply@postgresql.org> writes:
> The following query:

> select ('[\"\\\\\",\"\\\\' || repeat('a', 200) ||
> '\"]')::textrange::textmultirange

> leads to the server crash with the following stacktrace:

I think the problem here is that the range bound values inside the
multirange are supposed to be aligned (at least, write_multirange_data
thinks so) but multirange_get_range isn't accounting for the alignment
padding between the two values it extracts.  In this example that
causes it to extract an insane length for the second value.

If so, this would indicate extremely slipshod testing of the multirange
stuff, because the breakage is necessarily reached by multirange_out.

			regards, tom lane



Commits

  1. Fix alignment in multirange_get_range() function