From 492c386b4df465df8ebb9347e1579ad1b96bf41a Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Fri, 10 Apr 2026 11:17:32 +0900 Subject: [PATCH] Zero-fill private_data when attaching an injection point InjectionPointAttach() did not initialize the private_data buffer of the shared memory entry before (perhaps partially) overwriting it. When the private data is set to NULL by the caler, the buffer was left uninitialized. If set, it could have stale contents. The buffer is initialized to zero, so as the contents recorded when a point is attached are deterministic. Author: Sami Imseih Discussion: https://postgr.es/m/CAA5RZ0tsGHu2h6YLnVu4HiK05q+gTE_9WVUAqihW2LSscAYS-g@mail.gmail.com Backpatch-through: 17 --- src/backend/utils/misc/injection_point.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backend/utils/misc/injection_point.c b/src/backend/utils/misc/injection_point.c index 5e48f83d20d..d699bcad704 100644 --- a/src/backend/utils/misc/injection_point.c +++ b/src/backend/utils/misc/injection_point.c @@ -335,6 +335,7 @@ InjectionPointAttach(const char *name, entry->library[INJ_LIB_MAXLEN - 1] = '\0'; strlcpy(entry->function, function, sizeof(entry->function)); entry->function[INJ_FUNC_MAXLEN - 1] = '\0'; + memset(entry->private_data, 0, INJ_PRIVATE_MAXLEN); if (private_data != NULL) memcpy(entry->private_data, private_data, private_data_size);