| 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 |
| 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 |