BUG/MINOR: server-state: use the argument, not the global state

The refactoring in commit 131b07be3 ("MEDIUM: server: Refactor
apply_server_state() to make it more readable") also had a copy-paste
error resulting in using global.server_state_file instead of the
function's argument, which easily crashes with a conf having a
state file in a backend and no global state file.

In addition, let's simplify the code and get rid of strcpy() which
almost certainly will break the build on OpenBSD.

This was introduced in 2.4-dev10, no backport is needed.
This commit is contained in:
Willy Tarreau 2021-03-12 14:09:10 +01:00
parent 6d4173e622
commit 47a30c456c

View File

@ -733,9 +733,7 @@ static inline int srv_state_get_filepath(char *dst_path, int maxpathlen, const c
/* create the globalfilepath variable */ /* create the globalfilepath variable */
if (*filename == '/' || !global.server_state_base) { if (*filename == '/' || !global.server_state_base) {
/* absolute path or no base directory provided */ /* absolute path or no base directory provided */
len = strlen(filename); len = strlcpy2(dst_path, filename, maxpathlen);
if (len < maxpathlen)
strcpy(dst_path, global.server_state_file);
} }
else { else {
/* concat base directory and global server-state file */ /* concat base directory and global server-state file */