]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Avoid 0-length memcpy to NULL with EXEC_BACKEND
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Wed, 3 Jul 2024 12:58:14 +0000 (15:58 +0300)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Wed, 3 Jul 2024 13:20:56 +0000 (16:20 +0300)
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

src/backend/postmaster/launch_backend.c

index bdfa238e4fe0fbdc654265c99167a2b2f94a01ac..d6c63896a65629bd5fa1c573e0be6818e875d326 100644 (file)
@@ -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;
 }