]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: server-state: use the argument, not the global state
authorWilly Tarreau <w@1wt.eu>
Fri, 12 Mar 2021 13:09:10 +0000 (14:09 +0100)
committerWilly Tarreau <w@1wt.eu>
Fri, 12 Mar 2021 13:13:07 +0000 (14:13 +0100)
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.

src/server_state.c

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