Re: [PATCH] Fix segmentation fault and infinite loop in jsonb_{plperl,plpython}
Aleksander Alekseev <aleksander@tigerdata.com>
From: Aleksander Alekseev <aleksander@tigerdata.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-06-17T11:07:04Z
Lists: pgsql-hackers
Attachments
- v2-0001-jsonb_plperl-jsonb_plpython-Fix-unguarded-recursi.patch (text/x-patch) patch v2-0001
Hi Tom, Thanks for all your great feedback. > No, it'd be O(N^2) for an N-deep reference chain. Admittedly, > realistic use-cases would never have more than a couple of layers of > indirection. But this whole exercise is to guard against adversarial > inputs, I think. I don't really want to add cycles and complexity to > make our behavior a bit more friendly in cases that nobody is going > to get into unless they are trying to break the database. OK, that's fair enough. Here is the corrected patch. ``` =# SELECT perl_circular(); ^CCancel request sent ERROR: canceling statement due to user request CONTEXT: PL/Perl function "perl_circular" ``` -- Best regards, Aleksander Alekseev
Commits
-
hstore_plperl: Add CHECK_FOR_INTERRUPTS() in reference-unwinding loop.
- c0f17b04d906 19 (unreleased) landed
- d65cf6f800f0 18 (unreleased) landed
- 60a1d712a472 16 (unreleased) landed
- 4fbbabb0a729 15 (unreleased) landed
- 4efef9d18e63 17 (unreleased) landed
- 1f6b2295f952 14 (unreleased) landed
-
jsonb_plperl, jsonb_plpython: Fix unguarded recursion and loops.
- e3b7a43fa9b6 18 (unreleased) landed
- da82fbb8f9a3 19 (unreleased) landed
- b0f3465b6f6a 16 (unreleased) landed
- a6f23c3ade0e 15 (unreleased) landed
- 639fff5118a8 14 (unreleased) landed
- 3df0b77558d7 17 (unreleased) landed