public inbox for [email protected]help / color / mirror / Atom feed
pgsql: Fix memory allocation size in RegisterExtensionExplainOption() 2+ messages / 1 participants [nested] [flat]
* pgsql: Fix memory allocation size in RegisterExtensionExplainOption() @ 2026-03-02 04:15 Michael Paquier <[email protected]> 0 siblings, 0 replies; 2+ messages in thread From: Michael Paquier @ 2026-03-02 04:15 UTC (permalink / raw) To: [email protected] Fix memory allocation size in RegisterExtensionExplainOption() The allocations used for the static array ExplainExtensionOptionArray, that tracks a set of ExplainExtensionOption, used "char *" instead of ExplainExtensionOption as the memory size consumed by one element, underestimating the memory required by half. The initial allocation of ExplainExtensionNameArray wants to hold 16 elements before being reallocated, and with "char *" it meant that there was enough space only for 8 ExplainExtensionOption elements, 16 bytes required for each element. The backend would crash once one tries to register a 9th EXPLAIN option. As far as I can see, the allocation formulas of GetExplainExtensionId() have been copy-pasted to RegisterExtensionExplainOption(), but the internal maths of the copy were not adjusted accordingly. Oversight in c65bc2e1d14a. Author: Joel Jacobson <[email protected]> Discussion: https://postgr.es/m/[email protected] Backpatch-through: 18 Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/f7dc17aa9116a90a235ecf77c46afbbd6b6f8fbc Modified Files -------------- src/backend/commands/explain_state.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) ^ permalink raw reply [nested|flat] 2+ messages in thread
* pgsql: Fix memory allocation size in RegisterExtensionExplainOption() @ 2026-03-02 04:15 Michael Paquier <[email protected]> 0 siblings, 0 replies; 2+ messages in thread From: Michael Paquier @ 2026-03-02 04:15 UTC (permalink / raw) To: [email protected] Fix memory allocation size in RegisterExtensionExplainOption() The allocations used for the static array ExplainExtensionOptionArray, that tracks a set of ExplainExtensionOption, used "char *" instead of ExplainExtensionOption as the memory size consumed by one element, underestimating the memory required by half. The initial allocation of ExplainExtensionNameArray wants to hold 16 elements before being reallocated, and with "char *" it meant that there was enough space only for 8 ExplainExtensionOption elements, 16 bytes required for each element. The backend would crash once one tries to register a 9th EXPLAIN option. As far as I can see, the allocation formulas of GetExplainExtensionId() have been copy-pasted to RegisterExtensionExplainOption(), but the internal maths of the copy were not adjusted accordingly. Oversight in c65bc2e1d14a. Author: Joel Jacobson <[email protected]> Discussion: https://postgr.es/m/[email protected] Backpatch-through: 18 Branch ------ REL_18_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/730c98d0382fb7336ed39e4961950c40c2356819 Modified Files -------------- src/backend/commands/explain_state.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) ^ permalink raw reply [nested|flat] 2+ messages in thread
end of thread, other threads:[~2026-03-02 04:15 UTC | newest] Thread overview: 2+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2026-03-02 04:15 pgsql: Fix memory allocation size in RegisterExtensionExplainOption() Michael Paquier <[email protected]> 2026-03-02 04:15 pgsql: Fix memory allocation size in RegisterExtensionExplainOption() Michael Paquier <[email protected]>
This inbox is served by agora; see mirroring instructions for how to clone and mirror all data and code used for this inbox