version 1.1.1.5, 2013/10/14 07:56:35
|
version 1.1.1.6, 2014/06/15 16:12:55
|
Line 31
|
Line 31
|
# include "compat/stdbool.h" |
# include "compat/stdbool.h" |
#endif /* HAVE_STDBOOL_H */ |
#endif /* HAVE_STDBOOL_H */ |
|
|
|
#include "gettext.h" /* must be included before missing.h */ |
|
|
#include "missing.h" |
#include "missing.h" |
#include "alloc.h" |
#include "alloc.h" |
#include "fatal.h" |
#include "fatal.h" |
#include "gettext.h" |
|
#include "sudo_conf.h" |
#include "sudo_conf.h" |
#include "sudo_debug.h" |
#include "sudo_debug.h" |
#include "sudo_exec.h" |
#include "sudo_exec.h" |
Line 46 int
|
Line 47 int
|
main(int argc, char *argv[], char *envp[]) |
main(int argc, char *argv[], char *envp[]) |
{ |
{ |
char *cp, *cmnd; |
char *cp, *cmnd; |
int noexec = 0; | bool login_shell, noexec = false; |
debug_decl(main, SUDO_DEBUG_MAIN) |
debug_decl(main, SUDO_DEBUG_MAIN) |
|
|
setlocale(LC_ALL, ""); |
setlocale(LC_ALL, ""); |
Line 54 main(int argc, char *argv[], char *envp[])
|
Line 55 main(int argc, char *argv[], char *envp[])
|
textdomain(PACKAGE_NAME); |
textdomain(PACKAGE_NAME); |
|
|
if (argc < 2) |
if (argc < 2) |
fatalx(_("requires at least one argument")); | fatalx(U_("requires at least one argument")); |
|
|
/* Read sudo.conf. */ |
/* Read sudo.conf. */ |
sudo_conf_read(NULL); |
sudo_conf_read(NULL); |
|
|
|
/* If the first char of argv[0] is '-', we are running as a login shell. */ |
|
login_shell = argv[0][0] == '-'; |
|
|
/* If argv[0] ends in -noexec, pass the flag to sudo_execve() */ |
/* If argv[0] ends in -noexec, pass the flag to sudo_execve() */ |
if ((cp = strrchr(argv[0], '-')) != NULL && cp != argv[0]) |
if ((cp = strrchr(argv[0], '-')) != NULL && cp != argv[0]) |
noexec = strcmp(cp, "-noexec") == 0; |
noexec = strcmp(cp, "-noexec") == 0; |
Line 69 main(int argc, char *argv[], char *envp[])
|
Line 73 main(int argc, char *argv[], char *envp[])
|
cmnd = estrdup(argv[0]); |
cmnd = estrdup(argv[0]); |
|
|
/* If invoked as a login shell, modify argv[0] accordingly. */ |
/* If invoked as a login shell, modify argv[0] accordingly. */ |
if (argv[-1][0] == '-') { | if (login_shell) { |
if ((cp = strrchr(argv[0], '/')) == NULL) |
if ((cp = strrchr(argv[0], '/')) == NULL) |
cp = argv[0]; |
cp = argv[0]; |
*cp = '-'; |
*cp = '-'; |
} |
} |
sudo_execve(cmnd, argv, envp, noexec); |
sudo_execve(cmnd, argv, envp, noexec); |
warning(_("unable to execute %s"), argv[0]); | warning(U_("unable to execute %s"), argv[0]); |
sudo_debug_exit_int(__func__, __FILE__, __LINE__, sudo_debug_subsys, EXIT_FAILURE); |
sudo_debug_exit_int(__func__, __FILE__, __LINE__, sudo_debug_subsys, EXIT_FAILURE); |
_exit(EXIT_FAILURE); |
_exit(EXIT_FAILURE); |
} |
} |