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.94.2) (envelope-from ) id 1u7WYE-000rnh-8T for pgsql-hackers@arkaria.postgresql.org; Wed, 23 Apr 2025 09:37:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1u7WYC-0053NB-Ha for pgsql-hackers@arkaria.postgresql.org; Wed, 23 Apr 2025 09:37:53 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u7VXE-004SfL-CD for pgsql-hackers@lists.postgresql.org; Wed, 23 Apr 2025 08:32:49 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1u7VXB-001V74-2R for pgsql-hackers@postgresql.org; Wed, 23 Apr 2025 08:32:47 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1745397162; bh=gjZBiSxybcy6hXstE9w/mS+sLYsiMv0wxfkvIA3jyNM=; h=Date:From:To:Subject:Message-ID:From; b=k+MhnXy4wlDSGW3KHohdf0YfKDjqmA6WXgoAFkz4M7E6IXiCD0MFptpi733CQ7uho Dc7PgCNPoYeY5J8ReFwMPjxhRe/4ZvgdxsouKnllzj3ZzO089g+tBU46gVz/LaophQ W7/Z9nSvUW4LMEFOtv3nTaxguOYSbQRTZBuuwCwwbIo+Y4mVOyp8li05hHsw9at99E aVFnVr13id/olw+CdT87FKphz8udlhyd8JEsctYCxB3jsdKKSu2qFSkan862AAxGIr Yp6I3TY4M8ozaO3UwtPIrtd96n1T16aC+lZmgXWyz3eoOBgRLJ1dXvjDJU2GnIBDs4 uJZdEa/KG/FDA== Received: from mail.postgrespro.ru (webmail-slave-mstn.l.postgrespro.ru [192.168.2.28]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: m.korotkov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 57C4160923 for ; Wed, 23 Apr 2025 11:32:42 +0300 (MSK) MIME-Version: 1.0 Date: Wed, 23 Apr 2025 11:32:42 +0300 From: m.korotkov@postgrespro.ru To: pgsql-hackers@postgresql.org Subject: [PATCH] dynahash: add memory allocation failure check Message-ID: <219bdccd460510efaccf90b57e5e5ef2@postgrespro.ru> X-Sender: m.korotkov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_fd59b3dabb53b9df9121aa400d4b507f" X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2025/04/23 05:07:00 #27917061 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_fd59b3dabb53b9df9121aa400d4b507f Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Hi all, I found a case of potential NULL pointer dereference. In src/backend/utils/hash/dynahash.c in function HTAB *hash_create() the result of the DynaHashAlloc() is used unsafely. The function DynaHashAlloc() calls MemoryContextAllocExtended() with MCXT_ALLOC_NO_OOM and can return a NULL pointer. Added the pointer check for avoiding a potential problem. --- Best regards, Korotkov Maksim PostgresPro m.korotkov@postgrespro.ru --=_fd59b3dabb53b9df9121aa400d4b507f Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-dynahash-add-memory-allocation-failure-check.patch Content-Disposition: attachment; filename=0001-dynahash-add-memory-allocation-failure-check.patch; size=1218 RnJvbSA3NTkxNmE2ODU1YmI5ZTk2YzdiMzRiNzZjMDM4MGVkYzE1N2MxNTBjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYWtzaW0gS29yb3Rrb3YgPG0ua29yb3Rrb3ZAcG9zdGdyZXNw cm8ucnU+CkRhdGU6IFR1ZSwgMjIgQXByIDIwMjUgMTI6MjA6NTggKzAzMDAKU3ViamVjdDogW1BB VENIXSBkeW5haGFzaDogYWRkIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgY2hlY2sKIFRoZSBm dW5jdGlvbiBEeW5hSGFzaEFsbG9jKCkgY2FsbHMgTWVtb3J5Q29udGV4dEFsbG9jRXh0ZW5kZWQo KSB3aXRoIE1DWFRfQUxMT0NfTk9fT09NCiBhbmQgY2FuIHJldHVybiBhIE5VTEwgcG9pbnRlci4K IEZpeGVzOiBlMzg2MGZmYTRkZCAoIkluaXRpYWwgcGdpbmRlbnQgcnVuIHdpdGggcGdfYnNkX2lu ZGVudCB2ZXJzaW9uIDIuMC4iKQogU2lnbmVkLW9mZi1ieTogTWFrc2ltIEtvcm90a292IDxtLmtv cm90a292QHBvc3RncmVzcHJvLnJ1PgoKLS0tCiBzcmMvYmFja2VuZC91dGlscy9oYXNoL2R5bmFo YXNoLmMgfCA2ICsrKysrKwogMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2hhc2gvZHluYWhhc2guYwppbmRleCAzZjI1OTI5ZjJkOC4uMGNmZWU1MGRjMjEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9oYXNoL2R5bmFoYXNoLmMKQEAgLTM5MSw2ICszOTEsMTIgQEAgaGFzaF9jcmVhdGUo Y29uc3QgY2hhciAqdGFibmFtZSwgbG9uZyBuZWxlbSwgY29uc3QgSEFTSENUTCAqaW5mbywgaW50 IGZsYWdzKQogCiAJLyogSW5pdGlhbGl6ZSB0aGUgaGFzaCBoZWFkZXIsIHBsdXMgYSBjb3B5IG9m IHRoZSB0YWJsZSBuYW1lICovCiAJaGFzaHAgPSAoSFRBQiAqKSBEeW5hSGFzaEFsbG9jKHNpemVv ZihIVEFCKSArIHN0cmxlbih0YWJuYW1lKSArIDEpOworCWlmICh1bmxpa2VseShoYXNocCA9PSBO VUxMKSkKKwl7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PVVRfT0Zf TUVNT1JZKSwKKwkJCQkgZXJybXNnKCJvdXQgb2YgbWVtb3J5IikpKTsKKwl9CiAJTWVtU2V0KGhh c2hwLCAwLCBzaXplb2YoSFRBQikpOwogCiAJaGFzaHAtPnRhYm5hbWUgPSAoY2hhciAqKSAoaGFz aHAgKyAxKTsKLS0gCjIuMzQuMQoK --=_fd59b3dabb53b9df9121aa400d4b507f--