Change the change_root() function so that it takes its input as parameters instead of relying on static global variables. Reviewed-by: Philippe Mathieu-Daudé <f4bug@xxxxxxxxx> Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> --- os-posix.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/os-posix.c b/os-posix.c index 5a127feee2..30da1a1491 100644 --- a/os-posix.c +++ b/os-posix.c @@ -188,19 +188,16 @@ static void change_process_uid(uid_t uid, gid_t gid, const char *name) } } -static void change_root(void) +static void change_root(const char *root) { - if (chroot_dir) { - if (chroot(chroot_dir) < 0) { - error_report("chroot failed"); - exit(1); - } - if (chdir("/")) { - error_report("not able to chdir to /: %s", strerror(errno)); - exit(1); - } + if (chroot(root) < 0) { + error_report("chroot failed"); + exit(1); + } + if (chdir("/")) { + error_report("not able to chdir to /: %s", strerror(errno)); + exit(1); } - } void os_daemonize(void) @@ -267,7 +264,9 @@ void os_setup_post(void) } } - change_root(); + if (chroot_dir) { + change_root(chroot_dir); + } if (user_uid != -1 && user_gid != -1) { change_process_uid(user_uid, user_gid, user_name); } -- 2.34.1