summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeikki Linnakangas2024-07-03 12:58:14 +0000
committerHeikki Linnakangas2024-07-03 13:20:56 +0000
commit95219c020c3c8c59079f264386141065865a810e (patch)
treee501e51c355a096989aea322190b72c34ffc34ff
parent1906b1e0ad96010f2ab07f96e36488e0dc058594 (diff)
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.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/backend/postmaster/launch_backend.c b/src/backend/postmaster/launch_backend.c
index bdfa238e4fe..d6c63896a65 100644
--- a/src/backend/postmaster/launch_backend.c
+++ b/src/backend/postmaster/launch_backend.c
@@ -764,7 +764,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;
}