postgres.git / summary / log / commit / refs
commit d106295b60578b31da37b7ae95c694e14774411b
Author: Tom Lane <tgl@sss.pgh.pa.us>
Commit: Noah Misch <noah@leadboat.com>
Date: Mon May 11 12:13:50 2026 +0000
Unify src/common/'s definitions of MaxAllocSize.
Define MaxAllocSize in src/include/common/fe_memutils.h rather
than having several copies of it in different src/common/*.c files.
This also provides an opportunity to document it better.
Back-patch of commit 11b7de4a7, needed now because assorted security
fixes are adding additional references to MaxAllocSize in frontend
code.
Backpatch-through: 14-17
Security: CVE-2026-6473
src/common/psprintf.c | 3 ---
src/common/saslprep.c | 4 ----
src/common/stringinfo.c | 3 ---
src/include/common/fe_memutils.h | 12 ++++++++++++
4 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/src/common/psprintf.c b/src/common/psprintf.c
index a5a5cb121c5..49b4fc92baa 100644
--- a/src/common/psprintf.c
+++ b/src/common/psprintf.c
@@ -24,9 +24,6 @@
#include "postgres_fe.h"
-/* It's possible we could use a different value for this in frontend code */
-#define MaxAllocSize ((Size) 0x3fffffff) /* 1 gigabyte - 1 */
-
#endif
diff --git a/src/common/saslprep.c b/src/common/saslprep.c
index b8fe2026f99..ee211dd4ab5 100644
--- a/src/common/saslprep.c
+++ b/src/common/saslprep.c
@@ -24,10 +24,6 @@
#include "utils/memutils.h"
#else
#include "postgres_fe.h"
-
-/* It's possible we could use a different value for this in frontend code */
-#define MaxAllocSize ((Size) 0x3fffffff) /* 1 gigabyte - 1 */
-
#endif
#include "common/saslprep.h"
diff --git a/src/common/stringinfo.c b/src/common/stringinfo.c
index 76ff4d3e245..7469c83e90e 100644
--- a/src/common/stringinfo.c
+++ b/src/common/stringinfo.c
@@ -24,9 +24,6 @@
#include "postgres_fe.h"
-/* It's possible we could use a different value for this in frontend code */
-#define MaxAllocSize ((Size) 0x3fffffff) /* 1 gigabyte - 1 */
-
#endif
#include "lib/stringinfo.h"
diff --git a/src/include/common/fe_memutils.h b/src/include/common/fe_memutils.h
index e915ed19d9f..5780b53613c 100644
--- a/src/include/common/fe_memutils.h
+++ b/src/include/common/fe_memutils.h
@@ -9,6 +9,18 @@
#ifndef FE_MEMUTILS_H
#define FE_MEMUTILS_H
+/*
+ * Assumed maximum size for allocation requests.
+ *
+ * We don't enforce this, so the actual maximum is the platform's SIZE_MAX.
+ * But it's useful to have it defined in frontend builds, so that common
+ * code can check for oversized requests without having frontend-vs-backend
+ * differences. Also, some code relies on MaxAllocSize being no more than
+ * INT_MAX/2, so rather than setting this to SIZE_MAX, make it the same as
+ * the backend's value.
+ */
+#define MaxAllocSize ((Size) 0x3fffffff) /* 1 gigabyte - 1 */
+
/*
* Flags for pg_malloc_extended and palloc_extended, deliberately named
* the same as the backend flags.
[parent: 3fb66d3022f7]