diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 330e058c5f..b1c4896c90 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -8727,14 +8727,12 @@ do_pg_backup_start(const char *backupidstr, bool fast, List **tablespaces, errmsg("WAL level not sufficient for making an online backup"), errhint("\"wal_level\" must be set to \"replica\" or \"logical\" at server start."))); - if (strlen(backupidstr) > MAXPGPATH) + if (strlcpy(state->name, backupidstr, sizeof(state->name)) >= sizeof(state->name)) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("backup label too long (max %d bytes)", MAXPGPATH))); - memcpy(state->name, backupidstr, strlen(backupidstr)); - /* * Mark backup active in shared memory. We must do full-page WAL writes * during an on-line backup even if not doing so at other times, because