]> granicus.if.org Git - postgresql/commit
Avoid multiple free_struct_lconv() calls on same data.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 29 Feb 2016 04:39:20 +0000 (23:39 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 29 Feb 2016 04:40:28 +0000 (23:40 -0500)
commit47792639c3e320e8596205cb8a404bac1518e1de
treeed218744f52c5611dbe2058cdd3581344c7f151d
parent7cea53e2dcaa9100e8aab925e71fbc8a4b0c80d9
Avoid multiple free_struct_lconv() calls on same data.

A failure partway through PGLC_localeconv() led to a situation where
the next call would call free_struct_lconv() a second time, leading
to free() on already-freed strings, typically leading to a core dump.
Add a flag to remember whether we need to do that.

Per report from Thom Brown.  His example case only provokes the failure
as far back as 9.4, but nonetheless this code is obviously broken, so
back-patch to all supported branches.
src/backend/utils/adt/pg_locale.c