]> 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:32 +0000 (11:17 +0900)
committerMichael Paquier <michael@paquier.xyz>
Fri, 10 Apr 2026 02:17:32 +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 5e48f83d20d44993b6256c795fb6c7f96584affe..d699bcad70491348c91293993ca8e4e2165fb48b 100644 (file)
@@ -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);