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 1x0WjF-004gLY-1w for pgsql-bugs@arkaria.postgresql.org; Sun, 30 Aug 2026 04:01:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1x0WiE-00Cltq-12 for pgsql-bugs@arkaria.postgresql.org; Sun, 30 Aug 2026 04:00:06 +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 1x0WiE-00Clth-0B for pgsql-bugs@lists.postgresql.org; Sun, 30 Aug 2026 04:00:06 +0000 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1x0WiB-00000001yyb-2xBL for pgsql-bugs@lists.postgresql.org; Sun, 30 Aug 2026 04:00:05 +0000 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-480001972b8so1123989f8f.2 for ; Sat, 29 Aug 2026 21:00:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788062402; x=1788667202; darn=lists.postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:content-type:from:to:cc :subject:date:message-id:reply-to:content-type; bh=Kebf1cZbOcYgjoic86UeOVWHUAjnQG5+JesKsaA/HJ4=; b=lDcaLLXEkHkUsnNpouX8hfjoW3F/7/2N7sQPB8TWmVP3lqkeRVuAdvaQAae0p9Q3wJ iuzXknToahlxxW/cxPmq617cPX0s4xoEhEp1VY1W6AE3pCWdBE6VyeJVfhPIH9DgYYz+ Gdncs6psQQvw5YCT+Vm7wmf9naD7+wHqBaPl2pJ/uTN+UfWTLmM6fLd9yjXobdQtr9kY J8MEpSB9xMOtyuGuy7kNecsTyEjRuGMjYrdrd8w+1Npn5KcjhCngN9AYCe1QkKTz7x73 HDvf1v7dSjWa0MVlkbdRarbRHlRYpKOU6O73BAP7atKLal9Kk2aM+KiOwrAN+sn74k7j NzwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788062402; x=1788667202; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:content-type:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Kebf1cZbOcYgjoic86UeOVWHUAjnQG5+JesKsaA/HJ4=; b=Q2khDGcz+OrCsGJebRVS+9W1Iv03gTcWEKM8TiQKp3b8pIhezR24g5vx5yhqAVJVyL nPqnJchmHCvNrSYbMAJRNCVujcHJlqS7PBMP1QCaFFZtfAyY7jDf/Fm81p2Vzq3Wukii 6jPKdLn+2AYHAN0KqH1quMplgMRiO6a61prv1l5hE0456lrGxVin0+ombyWcR8mZd7Xw b/7aBrcOLoHymQ/rJUhgOWC/kHr8TOEA5C6eydQ+jRzK3YUKDOLVX2+VNm5tL2mqAEgq JGy/u+h34oPEbxN//yNbtuPY6Cr7Kk5TLyYp0KLFBxK5EiNsdDY33jz8asCuFNU56Izr FVSg== X-Forwarded-Encrypted: i=1; AKwUvBx/uiCexcWvVQvfSJtIhzT9lMDC9NxwAc6eLEPsPzBRqt6vpxVHU0dAG31OnI3A3sdxN7w/DdLVLqo8@lists.postgresql.org X-Gm-Message-State: AFuF++mppPxNlm0YCL5At9/nzfEgvuWqjb3n4HJlSzGi8AYZm+gLHDzB IYtmo0Hz/ig1TU08XNNAX+Fj/rVGEIvxMkNukyhpS3xSw75/3dFuIR3R X-Gm-Gg: AYBFou2gBW4zPIXipgkADKsuPhz2YI22Ftu+Ld9Vhezy2frTAEkqb71K0MZDjDn6uCM S+qqKU3egzRmASZcTnDB9UU3/OeU+GioEfhPayqgIKxaHNinDjMGJQT9ctS7zIUSBsJcOgMDLa9 1hvtQu2ftDoVIkiWaSX5V1vOUYpupkfS6DCTngnkujvANLRPzf+LN64J9mw4XeHHXSK12VC/SAR no57hXJ4wwffav0GfDbZRjZ4wVZbIy22gT5maiJzFBPcjb1SJnzoZHBd79CmW2Mn7LlF0bTSg/K fqSUvm1seVwhYVBm1eH9TO8fWf+MKpiQdtaUrdUnwALghLWlWag+LXM9eurNReUgh9L9o/X21mC T9Zm8cgia6hLMDbj9Xk4D8lxIMpJnQ1JX5MMs4BRItYITVgg60GVSU0QSFc9xFZc//mBH3FEkPt wbVK8X+IFLJU5j+hikO0FIZ4ofNQu+Qs5Um199d56pr9l1pS/ai62dihSNQx8l5JFv X-Received: by 2002:a05:6000:26cb:b0:482:e62e:a528 with SMTP id ffacd0b85a97d-482f79bf497mr26856338f8f.12.1788062402328; Sat, 29 Aug 2026 21:00:02 -0700 (PDT) Received: from [192.168.0.50] ([89.149.107.253]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482fbb32d30sm14359705f8f.34.2026.08.29.21.00.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 29 Aug 2026 21:00:01 -0700 (PDT) Content-Type: multipart/alternative; boundary="------------jO7ieUOL8cMFyAdtfcfvwgbt" Message-ID: <2ab10d25-7dc6-4914-8aea-ca0adfbe57c3@gmail.com> Date: Sun, 30 Aug 2026 07:00:00 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: BUG #19595: Three memory-safety defects in src/backend/tsearch/spell.c (dictionary loader), PG 18.3 To: Tom Lane Cc: Andrey Rachitskiy , michaelmalis2@gmail.com, pgsql-bugs@lists.postgresql.org References: <19595-7dc18b4e212c4757@postgresql.org> <325748.1785691547@sss.pgh.pa.us> <0f3ddeb5-0dbd-479c-9d0e-ae254758e624@gmail.com> <336527.1785701494@sss.pgh.pa.us> Content-Language: en-US From: Alexander Lakhin In-Reply-To: <336527.1785701494@sss.pgh.pa.us> 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. --------------jO7ieUOL8cMFyAdtfcfvwgbt Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hello Tom, 02.08.2026 23:11, Tom Lane wrote: > Hmph. Not sure I'd call that "memory safety", but yeah, this bit > isn't being careful about having a valid intermediate state of the > data structure. Thanks for the report! I discovered one more issue in this area. This OOM condition emulation: --- a/src/backend/snowball/libstemmer/api.c +++ b/src/backend/snowball/libstemmer/api.c @@ -6,3 +6,3 @@ extern struct SN_env * SN_new_env(int alloc_size)  { -    struct SN_env * z = (struct SN_env *) malloc(alloc_size); +    struct SN_env * z = (rand() % 2 == 0) ? NULL : (struct SN_env *) malloc(alloc_size);      if (z == NULL) return NULL; leads to `make check` crashes like: 2026-08-30 06:42:24.759 EEST postmaster[1423557] LOG:  client backend (PID 1423766) was terminated by signal 11: Segmentation fault 2026-08-30 06:42:24.759 EEST postmaster[1423557] DETAIL:  Failed process was running: SELECT ts_delete(to_tsvector('english', 'Rebel spaceships, striking from a hidden base'), 'spaceship') or 2026-08-30 06:46:50.112 EEST postmaster[1426347] LOG:  client backend (PID 1427391) was terminated by signal 11: Segmentation fault 2026-08-30 06:46:50.112 EEST postmaster[1426347] DETAIL:  Failed process was running: SELECT ts_lexize('thesaurus', 'one'); Could you please have a look if you're still around? Best regards, Alexander --------------jO7ieUOL8cMFyAdtfcfvwgbt Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit
Hello Tom,

02.08.2026 23:11, Tom Lane wrote:
Hmph.  Not sure I'd call that "memory safety", but yeah, this bit
isn't being careful about having a valid intermediate state of the
data structure.  Thanks for the report!

I discovered one more issue in this area. This OOM condition emulation:
--- a/src/backend/snowball/libstemmer/api.c
+++ b/src/backend/snowball/libstemmer/api.c
@@ -6,3 +6,3 @@ extern struct SN_env * SN_new_env(int alloc_size)
 {
-    struct SN_env * z = (struct SN_env *) malloc(alloc_size);
+    struct SN_env * z = (rand() % 2 == 0) ? NULL : (struct SN_env *) malloc(alloc_size);
     if (z == NULL) return NULL;

leads to `make check` crashes like:
2026-08-30 06:42:24.759 EEST postmaster[1423557] LOG:  client backend (PID 1423766) was terminated by signal 11: Segmentation fault
2026-08-30 06:42:24.759 EEST postmaster[1423557] DETAIL:  Failed process was running: SELECT ts_delete(to_tsvector('english', 'Rebel spaceships, striking from a hidden base'), 'spaceship')
or
2026-08-30 06:46:50.112 EEST postmaster[1426347] LOG:  client backend (PID 1427391) was terminated by signal 11: Segmentation fault
2026-08-30 06:46:50.112 EEST postmaster[1426347] DETAIL:  Failed process was running: SELECT ts_lexize('thesaurus', 'one');

Could you please have a look if you're still around?

Best regards,
Alexander
--------------jO7ieUOL8cMFyAdtfcfvwgbt--