]> 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:09 +0000 (11:17 +0900)
committerMichael Paquier <michael@paquier.xyz>
Fri, 10 Apr 2026 02:17:09 +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 9d30843a1118ea993938d306955ff8dbebc346b5..272ef5e578ad0368e0b5949f0a44f80989bda66c 100644 (file)
@@ -322,6 +322,7 @@ InjectionPointAttach(const char *name,
        strlcpy(entry->name, name, sizeof(entry->name));
        strlcpy(entry->library, library, sizeof(entry->library));
        strlcpy(entry->function, function, sizeof(entry->function));
+       memset(entry->private_data, 0, INJ_PRIVATE_MAXLEN);
        if (private_data != NULL)
                memcpy(entry->private_data, private_data, private_data_size);