From: Lennart Poettering Date: Thu, 22 Dec 2022 09:28:05 +0000 (+0100) Subject: core: tighten validation checks in SwitchRoot() dbus call X-Git-Tag: v253-rc1~213^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5f4c9c27d8507fc079e7dd0d448cab097491c85f;p=thirdparty%2Fsystemd.git core: tighten validation checks in SwitchRoot() dbus call --- diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index 9e529d6375c..ed91e9a1cfc 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -1680,9 +1680,9 @@ static int method_switch_root(sd_bus_message *message, void *userdata, sd_bus_er if (r < 0) return r; - if (isempty(root)) + if (!path_is_valid(root)) return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, - "New root directory may not be the empty string."); + "New root directory must be a valid path."); if (!path_is_absolute(root)) return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "New root path '%s' is not absolute.", root); @@ -1704,6 +1704,10 @@ static int method_switch_root(sd_bus_message *message, void *userdata, sd_bus_er } else { _cleanup_free_ char *chased = NULL; + if (!path_is_valid(init)) + return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, + "Path to init binary '%s' is not a valid path.", init); + if (!path_is_absolute(init)) return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Path to init binary '%s' not absolute.", init);