From ed80366139531e196e6582ab325f1c54efa2b384 Mon Sep 17 00:00:00 2001 From: Maanya Goenka Date: Wed, 4 Aug 2021 12:00:31 -0700 Subject: systemd-analyze: add root to find and verify executable --- src/analyze/analyze-verify.c | 18 +++++++++--------- src/analyze/analyze-verify.h | 2 +- src/analyze/test-verify.c | 8 ++++---- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/analyze/analyze-verify.c b/src/analyze/analyze-verify.c index 99bce68ca4..9ef6868367 100644 --- a/src/analyze/analyze-verify.c +++ b/src/analyze/analyze-verify.c @@ -115,7 +115,7 @@ static int verify_socket(Unit *u) { return 0; } -int verify_executable(Unit *u, const ExecCommand *exec) { +int verify_executable(Unit *u, const ExecCommand *exec, const char *root) { int r; if (!exec) @@ -124,14 +124,14 @@ int verify_executable(Unit *u, const ExecCommand *exec) { if (exec->flags & EXEC_COMMAND_IGNORE_FAILURE) return 0; - r = find_executable_full(exec->path, /* root= */ NULL, false, NULL, NULL); + r = find_executable_full(exec->path, root, false, NULL, NULL); if (r < 0) return log_unit_error_errno(u, r, "Command %s is not executable: %m", exec->path); return 0; } -static int verify_executables(Unit *u) { +static int verify_executables(Unit *u, const char *root) { ExecCommand *exec; int r = 0, k; unsigned i; @@ -141,20 +141,20 @@ static int verify_executables(Unit *u) { exec = u->type == UNIT_SOCKET ? SOCKET(u)->control_command : u->type == UNIT_MOUNT ? MOUNT(u)->control_command : u->type == UNIT_SWAP ? SWAP(u)->control_command : NULL; - k = verify_executable(u, exec); + k = verify_executable(u, exec, root); if (k < 0 && r == 0) r = k; if (u->type == UNIT_SERVICE) for (i = 0; i < ELEMENTSOF(SERVICE(u)->exec_command); i++) { - k = verify_executable(u, SERVICE(u)->exec_command[i]); + k = verify_executable(u, SERVICE(u)->exec_command[i], root); if (k < 0 && r == 0) r = k; } if (u->type == UNIT_SOCKET) for (i = 0; i < ELEMENTSOF(SOCKET(u)->exec_command); i++) { - k = verify_executable(u, SOCKET(u)->exec_command[i]); + k = verify_executable(u, SOCKET(u)->exec_command[i], root); if (k < 0 && r == 0) r = k; } @@ -189,7 +189,7 @@ static int verify_documentation(Unit *u, bool check_man) { return r; } -static int verify_unit(Unit *u, bool check_man) { +static int verify_unit(Unit *u, bool check_man, const char *root) { _cleanup_(sd_bus_error_free) sd_bus_error err = SD_BUS_ERROR_NULL; int r, k; @@ -207,7 +207,7 @@ static int verify_unit(Unit *u, bool check_man) { if (k < 0 && r == 0) r = k; - k = verify_executables(u); + k = verify_executables(u, root); if (k < 0 && r == 0) r = k; @@ -278,7 +278,7 @@ int verify_units(char **filenames, UnitFileScope scope, bool check_man, bool run } for (i = 0; i < count; i++) { - k = verify_unit(units[i], check_man); + k = verify_unit(units[i], check_man, root); if (k < 0 && r == 0) r = k; } diff --git a/src/analyze/analyze-verify.h b/src/analyze/analyze-verify.h index b547ca6b8d..6b3d6a5ab5 100644 --- a/src/analyze/analyze-verify.h +++ b/src/analyze/analyze-verify.h @@ -6,5 +6,5 @@ #include "execute.h" #include "path-lookup.h" -int verify_executable(Unit *u, const ExecCommand *exec); +int verify_executable(Unit *u, const ExecCommand *exec, const char *root); int verify_units(char **filenames, UnitFileScope scope, bool check_man, bool run_generators, const char *root); diff --git a/src/analyze/test-verify.c b/src/analyze/test-verify.c index 12c32159e5..eaf5e0b39b 100644 --- a/src/analyze/test-verify.c +++ b/src/analyze/test-verify.c @@ -4,12 +4,12 @@ static void test_verify_nonexistent(void) { /* Negative cases */ - assert_se(verify_executable(NULL, &(ExecCommand) {.flags = EXEC_COMMAND_IGNORE_FAILURE, .path = (char*) "/non/existent"}) == 0); - assert_se(verify_executable(NULL, &(ExecCommand) {.path = (char*) "/non/existent"}) < 0); + assert_se(verify_executable(NULL, &(ExecCommand) {.flags = EXEC_COMMAND_IGNORE_FAILURE, .path = (char*) "/non/existent"}, NULL) == 0); + assert_se(verify_executable(NULL, &(ExecCommand) {.path = (char*) "/non/existent"}, NULL) < 0); /* Ordinary cases */ - assert_se(verify_executable(NULL, &(ExecCommand) {.path = (char*) "/bin/echo"}) == 0); - assert_se(verify_executable(NULL, &(ExecCommand) {.flags = EXEC_COMMAND_IGNORE_FAILURE, .path = (char*) "/bin/echo"}) == 0); + assert_se(verify_executable(NULL, &(ExecCommand) {.path = (char*) "/bin/echo"}, NULL) == 0); + assert_se(verify_executable(NULL, &(ExecCommand) {.flags = EXEC_COMMAND_IGNORE_FAILURE, .path = (char*) "/bin/echo"}, NULL) == 0); } int main(int argc, char *argv[]) { -- cgit v1.2.1