From b44b749f28d28fdc85095d0807d10428d4fdf58c Mon Sep 17 00:00:00 2001 From: Norbert Pocs Date: Mon, 4 Jul 2022 10:07:55 +0200 Subject: [PATCH] Rewrite strerror to ssh_strerror Signed-off-by: Norbert Pocs Reviewed-by: Jakub Jelen --- src/config.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/config.c b/src/config.c index d005fb3b..8270b3a9 100644 --- a/src/config.c +++ b/src/config.c @@ -319,6 +319,7 @@ ssh_exec_shell(char *cmd) char *shell = NULL; pid_t pid; int status, devnull, rc; + char err_msg[SSH_ERRNO_MSG_MAX] = {0}; shell = getenv("SHELL"); if (shell == NULL || shell[0] == '\0') { @@ -334,7 +335,8 @@ ssh_exec_shell(char *cmd) /* Need this to redirect subprocess stdin/out */ devnull = open("/dev/null", O_RDWR); if (devnull == -1) { - SSH_LOG(SSH_LOG_WARN, "Failed to open(/dev/null): %s", strerror(errno)); + SSH_LOG(SSH_LOG_WARN, "Failed to open(/dev/null): %s", + ssh_strerror(errno, err_msg, SSH_ERRNO_MSG_MAX)); return -1; } @@ -346,12 +348,14 @@ ssh_exec_shell(char *cmd) /* Redirect child stdin and stdout. Leave stderr */ rc = dup2(devnull, STDIN_FILENO); if (rc == -1) { - SSH_LOG(SSH_LOG_WARN, "dup2: %s", strerror(errno)); + SSH_LOG(SSH_LOG_WARN, "dup2: %s", + ssh_strerror(errno, err_msg, SSH_ERRNO_MSG_MAX)); exit(1); } rc = dup2(devnull, STDOUT_FILENO); if (rc == -1) { - SSH_LOG(SSH_LOG_WARN, "dup2: %s", strerror(errno)); + SSH_LOG(SSH_LOG_WARN, "dup2: %s", + ssh_strerror(errno, err_msg, SSH_ERRNO_MSG_MAX)); exit(1); } if (devnull > STDERR_FILENO) { @@ -366,7 +370,7 @@ ssh_exec_shell(char *cmd) rc = execv(argv[0], argv); if (rc == -1) { SSH_LOG(SSH_LOG_WARN, "Failed to execute command '%s': %s", cmd, - strerror(errno)); + ssh_strerror(errno, err_msg, SSH_ERRNO_MSG_MAX)); /* Die with signal to make this error apparent to parent. */ signal(SIGTERM, SIG_DFL); kill(getpid(), SIGTERM); @@ -377,14 +381,16 @@ ssh_exec_shell(char *cmd) /* Parent */ close(devnull); if (pid == -1) { /* Error */ - SSH_LOG(SSH_LOG_WARN, "Failed to fork child: %s", strerror(errno)); + SSH_LOG(SSH_LOG_WARN, "Failed to fork child: %s", + ssh_strerror(errno, err_msg, SSH_ERRNO_MSG_MAX)); return -1; } while (waitpid(pid, &status, 0) == -1) { if (errno != EINTR) { - SSH_LOG(SSH_LOG_WARN, "waitpid failed: %s", strerror(errno)); + SSH_LOG(SSH_LOG_WARN, "waitpid failed: %s", + ssh_strerror(errno, err_msg, SSH_ERRNO_MSG_MAX)); return -1; } }