From 7517e6a673644b1ebfc1322438a2d82f92d15d8f Mon Sep 17 00:00:00 2001
From: Jakub Wartak <jakub.wartak@enterprisedb.com>
Date: Wed, 27 Sep 2023 08:26:22 +0200
Subject: [PATCH] Adjust pgstat_track_activity_query_size to be of size_t
 instead of int.

This prevents integer overflow for MemoryContextAllocHuge() in pg_stat_get_activity()
SQL function when it is being called on system with high values of
max_connections and high pgstat_track_activity_query_size (e.g. 1MB).

    postgres=# select * from pg_stat_get_activity(NULL);
    ERROR:  invalid memory alloc request size 18446744072590721024
---
 src/backend/utils/activity/backend_status.c | 2 +-
 src/include/utils/backend_status.h          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/backend/utils/activity/backend_status.c b/src/backend/utils/activity/backend_status.c
index 722c5acf38..a08a38c78c 100644
--- a/src/backend/utils/activity/backend_status.c
+++ b/src/backend/utils/activity/backend_status.c
@@ -43,7 +43,7 @@
  * ----------
  */
 bool		pgstat_track_activities = false;
-int			pgstat_track_activity_query_size = 1024;
+size_t		pgstat_track_activity_query_size = 1024;
 
 
 /* exposed so that backend_progress.c can access it */
diff --git a/src/include/utils/backend_status.h b/src/include/utils/backend_status.h
index d51c840daf..a487aeddd7 100644
--- a/src/include/utils/backend_status.h
+++ b/src/include/utils/backend_status.h
@@ -286,7 +286,7 @@ typedef struct LocalPgBackendStatus
  * ----------
  */
 extern PGDLLIMPORT bool pgstat_track_activities;
-extern PGDLLIMPORT int pgstat_track_activity_query_size;
+extern PGDLLIMPORT size_t pgstat_track_activity_query_size;
 
 
 /* ----------
-- 
2.30.2

