Residual cleanups for tied objects in PL/Perl

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Residual cleanups for tied objects in PL/Perl
Date: 2026-08-16 17:38:21
Message-ID: 569769.1786901901@sss.pgh.pa.us
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

The attached patch fixes a null pointer dereference case in
hstore_plperl, and an infinite-loop case in plperl itself.
These were left out of the recent plperl security patch because
they are not security matters according to our current rules;
but they are certainly bugs that ought to be fixed.

The test cases I have that reach these bugs require Perl "Tie"
modules that aren't present in common Perl installations,
so I'm not planning on trying to construct regression test
entries for them. But I've attached two SQL scripts that
cause failures without the patch.

One interesting point is that Claude Opus, which constructed
these test cases, seemed to think that we ought to be able
to read out the values assigned to the tied array or hash.
But what the repaired code actually produces is SQL NULLs.
AFAICT we are getting Perl "undef" values out of hv_iternext
or av_fetch, so it's hard to see how we could do any better.

I think what is going on here is that the test functions are
failing to install enough infrastructure for the tied object
to produce any output, but maybe someone who knows more Perl
than me can correct that guess.

regards, tom lane

Attachment Content-Type Size
v1-0001-Close-up-some-more-gaps-in-plperl-and-hstore_plpe.patch text/x-diff 2.4 KB
test_tied_hstore.sql text/plain 299 bytes
test_tied_array.sql text/plain 233 bytes

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2026-08-16 17:58:28 Re: pg_upgrade from pg19 source build to pg19-beta3 throws an error
Previous Message Ayush Tiwari 2026-08-16 17:10:33 Re: Make tsqueryout() use a StringInfo