v1-0002-Fix-UBSAN-crash-in-EventTriggerCollectAlterTSConf.patch
text/plain
Filename: v1-0002-Fix-UBSAN-crash-in-EventTriggerCollectAlterTSConf.patch
Type: text/plain
Part: 1
Patch
Format: format-patch
Series: patch v1-0002
Subject: Fix UBSAN crash in EventTriggerCollectAlterTSConfig
| File | + | − |
|---|---|---|
| src/backend/commands/event_trigger.c | 5 | 2 |
From 04344b57c717271a372d1e6335309e0fe53458b6 Mon Sep 17 00:00:00 2001
From: Florin Irion <florin.irion@enterprisedb.com>
Date: Tue, 3 Mar 2026 17:44:18 +0100
Subject: [PATCH v1 2/2] Fix UBSAN crash in EventTriggerCollectAlterTSConfig
Guard the palloc_array + memcpy with an ndicts > 0 check. The command
struct is already palloc0'd so dictIds defaults to NULL.
---
src/backend/commands/event_trigger.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/backend/commands/event_trigger.c b/src/backend/commands/event_trigger.c
index 028f9e2de90..2898967fa67 100644
--- a/src/backend/commands/event_trigger.c
+++ b/src/backend/commands/event_trigger.c
@@ -2004,8 +2004,11 @@ EventTriggerCollectAlterTSConfig(AlterTSConfigurationStmt *stmt, Oid cfgId,
command->in_extension = creating_extension;
ObjectAddressSet(command->d.atscfg.address,
TSConfigRelationId, cfgId);
- command->d.atscfg.dictIds = palloc_array(Oid, ndicts);
- memcpy(command->d.atscfg.dictIds, dictIds, sizeof(Oid) * ndicts);
+ if (ndicts > 0)
+ {
+ command->d.atscfg.dictIds = palloc_array(Oid, ndicts);
+ memcpy(command->d.atscfg.dictIds, dictIds, sizeof(Oid) * ndicts);
+ }
command->d.atscfg.ndicts = ndicts;
command->parsetree = (Node *) copyObject(stmt);
--
2.45.1