Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vxTd6-00GFEl-2Z for pgsql-hackers@arkaria.postgresql.org; Tue, 03 Mar 2026 17:33:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vxTd5-0085pJ-0k for pgsql-hackers@arkaria.postgresql.org; Tue, 03 Mar 2026 17:33:55 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vxTd4-0085pA-31 for pgsql-hackers@lists.postgresql.org; Tue, 03 Mar 2026 17:33:55 +0000 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vxTd1-00000000I0j-2s9E for pgsql-hackers@lists.postgresql.org; Tue, 03 Mar 2026 17:33:54 +0000 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-483708b697cso6763785e9.3 for ; Tue, 03 Mar 2026 09:33:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772559231; x=1773164031; darn=lists.postgresql.org; h=cc:subject:from:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=YGfdVijyfImr7xuos98CvvXCNi5S+pjUYN8rpfM5Xyo=; b=LYd1RUo/hYtoDuy7/AKMI8dLGJpLq32/FMbg8XyH6BRNelCGnkMX3a+YIfeXvyPUOj cRhB6Es43SgbswjW+FxYuVmCAyMBrQp2+ZEeSKdUmnszFwbbSwkd7TRDAt9MtR88/mo/ WgDbLBgE4InDSPpDSXWZAvhkG5QFZgZ2SNaBm3KSGeQ+t7UdinOQhcPbxuY975fcXAro kVFkMZAhY0iZbFR3EiDC2byo8/38bvA07IUsb58zIxtLIbOMge1s/6DMoEE7tzvLInBz sA1HfuPNaH3jfQMnkHJRPrD8/3yYWcvRPQDv8E8REgyVyGxm13PGARAO8yO+FzRY6r90 Jfrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772559231; x=1773164031; h=cc:subject:from:to:content-language:user-agent:mime-version:date :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=YGfdVijyfImr7xuos98CvvXCNi5S+pjUYN8rpfM5Xyo=; b=fP6XtS9vr4rZhxBDemD/voRTH3bF/WeIYjpZ7SQEqINv756scqxBHTerFo3mqwoTZY HSjm2VpSfVVCJidfG16Oc32lEK5LtR39/zlhK1lx++84MYs+U9SZ5ZdYLbs7I06APhFD 7P5tC96UHbjuBgosrZBQNNEgsWrq9CqSRH4Jj5IUKjQhsDLarj30VU5ZsoBI5T4FEnD6 y6xMKxyrFcUtM8ugVdiGmxqScA4VFcvVse++dgvZu6951Ba2UmVzHOTUMaYV+cP0lcXl 0rh0wlARTyV6sNtV2Ml2m/Slnxr+uVuj3QOAng8saDB3f/F/+bHefURSqb1dyHqrNpcH edIQ== X-Gm-Message-State: AOJu0YzF6A2ujJmITLUuiiI2ntBF1deaHRIyb0xERFhnnca8uPk+Mx2v KeGxtJK+0h/CQM8v+QXcwp82a6irxWgvHM0N/XHCsjWLmz6uctugr/Nkwy83fdbI X-Gm-Gg: ATEYQzw2oHjF0DB8aRru5ms6MCXZvs2sJmsT8DhD5+wo5UXHZt4lYrjfiEBBf8+QyzS jG2lcmYOHymNAaBV88MfW8ssSO703LRv0uKwgTdo8vtBIxNsOFGIoLNcsEtm8VTjha5u5EYR8r2 F33jkhdSalaHu/dJL4fXd+u5B2ePBJtQnlKPxK9NrDkSKRdTfizGSHPywzfEd8VoA/AFVQhDq1p VfA1bz/zkCGATH5d4Lbta4Jbf/Dm4VWf01SPMS1HHcJtUI7kaDCLqeMJ0hqk8MyXwhlGVMDDixn aVCpSHwPOLi/8UbmktsKe/Y1KxODiGCzg5/yNUOYajsu2dZFwrYli6/0V4m25Vw9jA1E9pVdQM7 6yPgptzXnZQ5AZeQby43zt7fXMvWItN8+VzHuuJnWWDfT1JrSWkYaT4hR6CqbgDQOXXi7OawMiZ V0AxVdReDWcYUvkz3uVr/dEI/4mzyDmQda8C6UX94h1AMoUpcd5JNyXuQDnEEJWxjpV7Xnf0IG+ +BnqHeKoB8= X-Received: by 2002:a05:600c:5249:b0:477:a478:3f94 with SMTP id 5b1f17b1804b1-483c9c29b66mr179477915e9.5.1772559230200; Tue, 03 Mar 2026 09:33:50 -0800 (PST) Received: from [192.168.178.68] ([163.116.235.146]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4399c75b272sm35290941f8f.24.2026.03.03.09.33.49 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 03 Mar 2026 09:33:49 -0800 (PST) Content-Type: multipart/mixed; boundary="------------rvXMAhf18VxUy9Ukx82eXrSy" Message-ID: Date: Tue, 3 Mar 2026 18:33:40 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: pgsql-hackers@lists.postgresql.org From: Florin Irion Subject: UBSAN crash in EventTriggerCollectAlterTSConfig (memcpy with NULL src) Cc: =?UTF-8?Q?=C3=81lvaro_Herrera?= List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------rvXMAhf18VxUy9Ukx82eXrSy Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi, While working on the pg_get_domain_ddl() patch [1], I installed an event trigger on ddl_command_end in test_setup.sql to automatically round-trip DDL. This triggered a UBSAN crash on CI [2] that turns out to be a pre-existing bug since b488c580aef(?). The DROP MAPPING code path in tsearchcmds.c unconditionally calls: ``` EventTriggerCollectAlterTSConfig(stmt, cfgId, NULL, 0); ``` Inside EventTriggerCollectAlterTSConfig(), this reaches: ``` command->d.atscfg.dictIds = palloc_array(Oid, ndicts); /* ndicts=0 */ memcpy(command->d.atscfg.dictIds, dictIds, sizeof(Oid) * ndicts); ^^^^^^^ NULL ``` Under -fsanitize=undefined this triggers SIGABRT and crashes the server. The bug has been latent for 11 years because without an active event trigger, currentEventTriggerState is NULL and the function returns early at the top, never reaching the memcpy. The standard regression suite never had an event trigger installed during the tsdicts test — until now. Reproducer (crashes only under UBSAN) and patch attached: This affects all branches back to 9.5 where b488c580aef landed. [1] https://www.postgresql.org/message-id/CAPgqM1V4LW2qiDLPsusb7s0kYbSDJjH5Tt%2B-ZzVmPU7xV0TJNQ%40mail.gmail.com [2] https://cirrus-ci.com/task/6170470552174592 -- Cheers, Florin EDB -- www.enterprisedb.com --------------rvXMAhf18VxUy9Ukx82eXrSy Content-Type: text/plain; charset=UTF-8; name="v1-0001-Add-regression-test-for-EventTriggerCollectAlterT.patch" Content-Disposition: attachment; filename*0="v1-0001-Add-regression-test-for-EventTriggerCollectAlterT.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBiYzM4ZjcwMTZjODY4ZmYxYmU2ODIxNGI0YTEzNDc3M2NkYTIxNGNiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGbG9yaW4gSXJpb24gPGZsb3Jpbi5pcmlvbkBlbnRl cnByaXNlZGIuY29tPgpEYXRlOiBUdWUsIDMgTWFyIDIwMjYgMTc6NDE6MjMgKzAxMDAKU3Vi amVjdDogW1BBVENIIHYxIDEvMl0gQWRkIHJlZ3Jlc3Npb24gdGVzdCBmb3IKIEV2ZW50VHJp Z2dlckNvbGxlY3RBbHRlclRTQ29uZmlnIHdpdGggTlVMTCBkaWN0SWRzCgpUaGUgRFJPUCBN QVBQSU5HIGNvZGUgcGF0aCBpbiB0c2VhcmNoY21kcy5jIGNhbGxzCkV2ZW50VHJpZ2dlckNv bGxlY3RBbHRlclRTQ29uZmlnKHN0bXQsIGNmZ0lkLCBOVUxMLCAwKS4gIFdoZW4gYW4gZXZl bnQKdHJpZ2dlciBvbiBkZGxfY29tbWFuZF9lbmQgaXMgYWN0aXZlLCB0aGlzIHJlYWNoZXMg bWVtY3B5KGRlc3QsIE5VTEwsIDApCndoaWNoIGlzIHVuZGVmaW5lZCBiZWhhdmlvci4gIFVu ZGVyIC1mc2FuaXRpemU9dW5kZWZpbmVkIHRoaXMgY3Jhc2hlcwp0aGUgc2VydmVyLgoKQWRk IGEgdGVzdCB0aGF0IGV4ZXJjaXNlcyB0aGlzIGV4YWN0IGNvZGUgcGF0aDogYSBkZGxfY29t bWFuZF9lbmQgZXZlbnQKdHJpZ2dlciBjb21iaW5lZCB3aXRoIEFMVEVSIFRFWFQgU0VBUkNI IENPTkZJR1VSQVRJT04gLi4uIERST1AgTUFQUElORy4KCkJ1ZyBsYXRlbnQgc2luY2UgYjQ4 OGM1ODBhZWYgKDIwMTUpLgotLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXZlbnRf dHJpZ2dlci5vdXQgfCAxNSArKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2V2ZW50X3RyaWdnZXIuc3FsICAgICAgfCAxOCArKysrKysrKysrKysrKysrKysKIDIgZmls ZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZXZlbnRfdHJpZ2dlci5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2V2ZW50X3RyaWdnZXIub3V0CmluZGV4IDE2ZTQ1MzA3MDhjLi4xZjM3ZjRjM2Q1 YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ldmVudF90cmlnZ2Vy Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V2ZW50X3RyaWdnZXIub3V0 CkBAIC04MTcsMyArODE3LDE4IEBAIE5PVElDRTogIERST1AgUE9MSUNZIGRyb3BwZWQgcG9s aWN5CiBDUkVBVEUgUE9MSUNZIHBndWMgT04gZXZlbnRfdHJpZ2dlcl90ZXN0IFVTSU5HIChG QUxTRSk7CiBTRVQgZXZlbnRfdHJpZ2dlcnMgPSAnb2ZmJzsKIERST1AgUE9MSUNZIHBndWMg T04gZXZlbnRfdHJpZ2dlcl90ZXN0OworLS0gVGVzdCB0aGF0IEV2ZW50VHJpZ2dlckNvbGxl Y3RBbHRlclRTQ29uZmlnIGhhbmRsZXMgRFJPUCBNQVBQSU5HCistLSB3aXRoIG5kaWN0cz0w LCBkaWN0SWRzPU5VTEwgKHRoZSBEUk9QIE1BUFBJTkcgY29kZSBwYXRoIGFsd2F5cworLS0g cGFzc2VzIE5VTEwsMCkuICBQcmV2aW91c2x5IGNyYXNoZWQgdW5kZXIgVUJTQU4gZHVlIHRv CistLSBtZW1jcHkoZGVzdCwgTlVMTCwgMCkgYmVpbmcgdW5kZWZpbmVkIGJlaGF2aW9yLgor Q1JFQVRFIEZVTkNUSU9OIG5vb3BfZXZlbnRfdHJpZ2dlcigpIFJFVFVSTlMgZXZlbnRfdHJp Z2dlcgorTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJCBCRUdJTiBFTkQ7ICQkOworQ1JFQVRFIEVW RU5UIFRSSUdHRVIgbm9vcF9ldmVudF90cmlnZ2VyIE9OIGRkbF9jb21tYW5kX2VuZAorICAg IEVYRUNVVEUgRlVOQ1RJT04gbm9vcF9ldmVudF90cmlnZ2VyKCk7CitTRVQgZXZlbnRfdHJp Z2dlcnMgPSAnb24nOworQ1JFQVRFIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04gZXZ0dHJp Z190c2NmZyAoQ09QWSA9IHBnX2NhdGFsb2cuc2ltcGxlKTsKK0FMVEVSIFRFWFQgU0VBUkNI IENPTkZJR1VSQVRJT04gZXZ0dHJpZ190c2NmZworICAgIERST1AgTUFQUElORyBGT1Igd29y ZDsKK0RST1AgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiBldnR0cmlnX3RzY2ZnOworRFJP UCBFVkVOVCBUUklHR0VSIG5vb3BfZXZlbnRfdHJpZ2dlcjsKK0RST1AgRlVOQ1RJT04gbm9v cF9ldmVudF90cmlnZ2VyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXZl bnRfdHJpZ2dlci5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ldmVudF90cmlnZ2VyLnNx bAppbmRleCBjNjEzYzBjZmQ0My4uZDk1NWIzZDBhYmUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2V2ZW50X3RyaWdnZXIuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2V2ZW50X3RyaWdnZXIuc3FsCkBAIC02MzgsMyArNjM4LDIxIEBAIERST1AgUE9MSUNZ IHBndWMgT04gZXZlbnRfdHJpZ2dlcl90ZXN0OwogQ1JFQVRFIFBPTElDWSBwZ3VjIE9OIGV2 ZW50X3RyaWdnZXJfdGVzdCBVU0lORyAoRkFMU0UpOwogU0VUIGV2ZW50X3RyaWdnZXJzID0g J29mZic7CiBEUk9QIFBPTElDWSBwZ3VjIE9OIGV2ZW50X3RyaWdnZXJfdGVzdDsKKworLS0g VGVzdCB0aGF0IEV2ZW50VHJpZ2dlckNvbGxlY3RBbHRlclRTQ29uZmlnIGhhbmRsZXMgRFJP UCBNQVBQSU5HCistLSB3aXRoIG5kaWN0cz0wLCBkaWN0SWRzPU5VTEwgKHRoZSBEUk9QIE1B UFBJTkcgY29kZSBwYXRoIGFsd2F5cworLS0gcGFzc2VzIE5VTEwsMCkuICBQcmV2aW91c2x5 IGNyYXNoZWQgdW5kZXIgVUJTQU4gZHVlIHRvCistLSBtZW1jcHkoZGVzdCwgTlVMTCwgMCkg YmVpbmcgdW5kZWZpbmVkIGJlaGF2aW9yLgorQ1JFQVRFIEZVTkNUSU9OIG5vb3BfZXZlbnRf dHJpZ2dlcigpIFJFVFVSTlMgZXZlbnRfdHJpZ2dlcgorTEFOR1VBR0UgcGxwZ3NxbCBBUyAk JCBCRUdJTiBFTkQ7ICQkOworQ1JFQVRFIEVWRU5UIFRSSUdHRVIgbm9vcF9ldmVudF90cmln Z2VyIE9OIGRkbF9jb21tYW5kX2VuZAorICAgIEVYRUNVVEUgRlVOQ1RJT04gbm9vcF9ldmVu dF90cmlnZ2VyKCk7CitTRVQgZXZlbnRfdHJpZ2dlcnMgPSAnb24nOworCitDUkVBVEUgVEVY VCBTRUFSQ0ggQ09ORklHVVJBVElPTiBldnR0cmlnX3RzY2ZnIChDT1BZID0gcGdfY2F0YWxv Zy5zaW1wbGUpOworQUxURVIgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiBldnR0cmlnX3Rz Y2ZnCisgICAgRFJPUCBNQVBQSU5HIEZPUiB3b3JkOworCitEUk9QIFRFWFQgU0VBUkNIIENP TkZJR1VSQVRJT04gZXZ0dHJpZ190c2NmZzsKK0RST1AgRVZFTlQgVFJJR0dFUiBub29wX2V2 ZW50X3RyaWdnZXI7CitEUk9QIEZVTkNUSU9OIG5vb3BfZXZlbnRfdHJpZ2dlcjsKLS0gCjIu NDUuMQoK --------------rvXMAhf18VxUy9Ukx82eXrSy Content-Type: text/plain; charset=UTF-8; name="v1-0002-Fix-UBSAN-crash-in-EventTriggerCollectAlterTSConf.patch" Content-Disposition: attachment; filename*0="v1-0002-Fix-UBSAN-crash-in-EventTriggerCollectAlterTSConf.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwNDM0NGI1N2M3MTcyNzFhMzcyZDFlNjMzNTMwOWUwZmU1MzQ1OGI2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGbG9yaW4gSXJpb24gPGZsb3Jpbi5pcmlvbkBlbnRl cnByaXNlZGIuY29tPgpEYXRlOiBUdWUsIDMgTWFyIDIwMjYgMTc6NDQ6MTggKzAxMDAKU3Vi amVjdDogW1BBVENIIHYxIDIvMl0gRml4IFVCU0FOIGNyYXNoIGluIEV2ZW50VHJpZ2dlckNv bGxlY3RBbHRlclRTQ29uZmlnCgpHdWFyZCB0aGUgcGFsbG9jX2FycmF5ICsgbWVtY3B5IHdp dGggYW4gbmRpY3RzID4gMCBjaGVjay4gIFRoZSBjb21tYW5kCnN0cnVjdCBpcyBhbHJlYWR5 IHBhbGxvYzAnZCBzbyBkaWN0SWRzIGRlZmF1bHRzIHRvIE5VTEwuCi0tLQogc3JjL2JhY2tl bmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jIHwgNyArKysrKy0tCiAxIGZpbGUgY2hhbmdl ZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2V2ZW50X3RyaWdnZXIuYwppbmRleCAwMjhmOWUyZGU5MC4uMjg5ODk2N2ZhNjcgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKQEAgLTIwMDQsOCArMjAwNCwxMSBA QCBFdmVudFRyaWdnZXJDb2xsZWN0QWx0ZXJUU0NvbmZpZyhBbHRlclRTQ29uZmlndXJhdGlv blN0bXQgKnN0bXQsIE9pZCBjZmdJZCwKIAljb21tYW5kLT5pbl9leHRlbnNpb24gPSBjcmVh dGluZ19leHRlbnNpb247CiAJT2JqZWN0QWRkcmVzc1NldChjb21tYW5kLT5kLmF0c2NmZy5h ZGRyZXNzLAogCQkJCQkgVFNDb25maWdSZWxhdGlvbklkLCBjZmdJZCk7Ci0JY29tbWFuZC0+ ZC5hdHNjZmcuZGljdElkcyA9IHBhbGxvY19hcnJheShPaWQsIG5kaWN0cyk7Ci0JbWVtY3B5 KGNvbW1hbmQtPmQuYXRzY2ZnLmRpY3RJZHMsIGRpY3RJZHMsIHNpemVvZihPaWQpICogbmRp Y3RzKTsKKwlpZiAobmRpY3RzID4gMCkKKwl7CisJCWNvbW1hbmQtPmQuYXRzY2ZnLmRpY3RJ ZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBuZGljdHMpOworCQltZW1jcHkoY29tbWFuZC0+ZC5h dHNjZmcuZGljdElkcywgZGljdElkcywgc2l6ZW9mKE9pZCkgKiBuZGljdHMpOworCX0KIAlj b21tYW5kLT5kLmF0c2NmZy5uZGljdHMgPSBuZGljdHM7CiAJY29tbWFuZC0+cGFyc2V0cmVl ID0gKE5vZGUgKikgY29weU9iamVjdChzdG10KTsKIAotLSAKMi40NS4xCgo= --------------rvXMAhf18VxUy9Ukx82eXrSy--