Use safe string copy routine
authorDaniel Gustafsson <dgustafsson@postgresql.org>
Tue, 2 Jul 2024 09:16:56 +0000 (11:16 +0200)
committerDaniel Gustafsson <dgustafsson@postgresql.org>
Tue, 2 Jul 2024 09:16:56 +0000 (11:16 +0200)
Using memcpy with strlen as the size parameter will not take the
NULL terminator into account, relying instead on the destination
buffer being properly initialized. Replace with strlcpy which is
a safer alternative, and more in line with how we handle copying
strings elsewhere.

Author: Ranier Vilela <ranier.vf@gmail.com>
Discussion: https://postgr.es/m/CAEudQApAsbLsQ+gGiw-hT+JwGhgogFa_=5NUkgFO6kOPxyNidQ@mail.gmail.com

src/backend/access/transam/xlog.c

index d36272ab4ff4f69634b2d4aa4160a67ad644fb9a..33e27a6e72c1431c308566e7b7dd82ea15c15663 100644 (file)
@@ -8744,7 +8744,7 @@ do_pg_backup_start(const char *backupidstr, bool fast, List **tablespaces,
                                 errmsg("backup label too long (max %d bytes)",
                                                MAXPGPATH)));
 
-       memcpy(state->name, backupidstr, strlen(backupidstr));
+       strlcpy(state->name, backupidstr, sizeof(state->name));
 
        /*
         * Mark backup active in shared memory.  We must do full-page WAL writes