From 9a43cbb2b9b458e0f950cdab7ae557aa8f914be9 Mon Sep 17 00:00:00 2001 From: Jakub Wartak Date: Wed, 27 Sep 2023 10:13:39 +0200 Subject: [PATCH v2] Cast MemoryContextAllocHuge() calculations in pg_stat_get_activity() SQL function to size_t. 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 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/utils/activity/backend_status.c b/src/backend/utils/activity/backend_status.c index 722c5acf38..e6d1397db2 100644 --- a/src/backend/utils/activity/backend_status.c +++ b/src/backend/utils/activity/backend_status.c @@ -765,7 +765,7 @@ pgstat_read_current_status(void) NAMEDATALEN * NumBackendStatSlots); localactivity = (char *) MemoryContextAllocHuge(backendStatusSnapContext, - pgstat_track_activity_query_size * NumBackendStatSlots); + (size_t)pgstat_track_activity_query_size * (size_t)NumBackendStatSlots); #ifdef USE_SSL localsslstatus = (PgBackendSSLStatus *) MemoryContextAlloc(backendStatusSnapContext, -- 2.30.2