Re: empty array case in plperl_ref_from_pg_array not handled correctly - Mailing list pgsql-hackers

From Oleksii Kliukin
Subject Re: empty array case in plperl_ref_from_pg_array not handled correctly
Date
Msg-id 36414960-17FB-428C-B755-EA3231BAFA0B@hintbits.com
Whole thread Raw
In response to Re: empty array case in plperl_ref_from_pg_array not handled correctly  (Alex Hunsaker <badalex@gmail.com>)
List pgsql-hackers

On 08 Mar 2016, at 10:11, Alex Hunsaker <badalex@gmail.com> wrote:



On Mon, Mar 7, 2016 at 11:32 PM, Andres Freund <andres@anarazel.de> wrote:
Hi,

Per the new valgrind animal we get:

http://pgbuildfarm.org/cgi-bin/show_log.pl?nm=skink&dt=2016-03-08%2004%3A22%3A00
2016-03-08
05:56:05.566 UTC [56de6971.723:5] LOG:  statement: select plperl_sum_array('{}');
==1827== Invalid write of size 4
==1827==    at 0x14E35DD1: plperl_ref_from_pg_array (plperl.c:1459)


[ I think you may have meant to CC me not Alexey K. I'm probably the person responsible :D. ]

Indeed, I think the simplest fix is to make plperl_ref_from_pg_array() return an "empty" array in that case. The attached fixes the valgrind warning for me. (cassert enabled build on master).

Looks good to me, thank you. Judging from the size in the error message it’s likely the

info->nelems[0] = items

line that caused this issue. The patch fixes it at first glance, although I have yet to make my valgrind setup on OS X working to check this for real :-)

Kind regards,
--
Oleksii

pgsql-hackers by date:

Previous
From: Fabien COELHO
Date:
Subject: Re: extend pgbench expressions with functions
Next
From: Alvaro Herrera
Date:
Subject: Re: Allowing to run a buildfarm animal under valgrind