]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Zero-fill private_data when attaching an injection point
authorMichael Paquier <michael@paquier.xyz>
Fri, 10 Apr 2026 02:17:30 +0000 (11:17 +0900)
committerMichael Paquier <michael@paquier.xyz>
Fri, 10 Apr 2026 02:17:30 +0000 (11:17 +0900)
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 <samimseih@gmail.com>
Discussion: https://postgr.es/m/CAA5RZ0tsGHu2h6YLnVu4HiK05q+gTE_9WVUAqihW2LSscAYS-g@mail.gmail.com
Backpatch-through: 17

src/backend/utils/misc/injection_point.c

index f795fc2563f1dc2cd276e566c87b3ab3c065018e..64f11d4ba93ea08d7f344af7b3e0ca99888b371d 100644 (file)
@@ -336,6 +336,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);