diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2024-07-03 15:58:14 +0300 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2024-07-03 15:58:14 +0300 |
commit | f3412a61f3f92d795ce0c8bb715831ec02124bfb (patch) | |
tree | 423c045bdcbc027d3325b2605b4d6d8457c195f6 | |
parent | a06e8f84a1ac1158ca7d7a95d9df289fe5219502 (diff) | |
download | postgresql-f3412a61f3f92d795ce0c8bb715831ec02124bfb.tar.gz postgresql-f3412a61f3f92d795ce0c8bb715831ec02124bfb.zip |
Avoid 0-length memcpy to NULL with EXEC_BACKEND
memcpy(NULL, src, 0) is forbidden by POSIX, even though every
production version of libc allows it. Let's be tidy.
Per report from Thomas Munro, running UBSan with EXEC_BACKEND.
Backpatch to v17, where this code was added.
Discussion: https://www.postgresql.org/message-id/CA%2BhUKG%2Be-dV7YWBzfBZXsgovgRuX5VmvmOT%2Bv0aXiZJ-EKbXcw@mail.gmail.com
-rw-r--r-- | src/backend/postmaster/launch_backend.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/backend/postmaster/launch_backend.c b/src/backend/postmaster/launch_backend.c index 49e4be4b399..f9b24b79899 100644 --- a/src/backend/postmaster/launch_backend.c +++ b/src/backend/postmaster/launch_backend.c @@ -762,7 +762,8 @@ save_backend_variables(BackendParameters *param, ClientSocket *client_sock, strlcpy(param->pkglib_path, pkglib_path, MAXPGPATH); param->startup_data_len = startup_data_len; - memcpy(param->startup_data, startup_data, startup_data_len); + if (startup_data_len > 0) + memcpy(param->startup_data, startup_data, startup_data_len); return true; } |