If we were invoked with any name ending in "edit", treat as sudoedit.

This commit is contained in:
Todd C. Miller
2014-09-08 09:37:39 -06:00
parent 5fcc7a8f27
commit 1cc2433428

View File

@@ -180,6 +180,8 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv, char ***settingsp,
const char *runas_user = NULL; const char *runas_user = NULL;
const char *runas_group = NULL; const char *runas_group = NULL;
const char *debug_flags; const char *debug_flags;
const char *progname;
int proglen;
int nenv = 0; int nenv = 0;
int env_size = 32; int env_size = 32;
debug_decl(parse_args, SUDO_DEBUG_ARGS) debug_decl(parse_args, SUDO_DEBUG_ARGS)
@@ -187,10 +189,13 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv, char ***settingsp,
env_add = sudo_emallocarray(env_size, sizeof(char *)); env_add = sudo_emallocarray(env_size, sizeof(char *));
/* Pass progname to plugin so it can call initprogname() */ /* Pass progname to plugin so it can call initprogname() */
sudo_settings[ARG_PROGNAME].value = getprogname(); progname = getprogname();
sudo_settings[ARG_PROGNAME].value = progname;
/* First, check to see if we were invoked as "sudoedit". */ /* First, check to see if we were invoked as "sudoedit". */
if (strcmp(getprogname(), "sudoedit") == 0) { proglen = strlen(progname);
if (proglen > 4 && strcmp(progname + proglen - 4, "edit") == 0) {
progname = "sudoedit";
mode = MODE_EDIT; mode = MODE_EDIT;
sudo_settings[ARG_SUDOEDIT].value = "true"; sudo_settings[ARG_SUDOEDIT].value = "true";
} }
@@ -287,7 +292,7 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv, char ***settingsp,
continue; continue;
} }
if (mode && mode != MODE_HELP) { if (mode && mode != MODE_HELP) {
if (strcmp(getprogname(), "sudoedit") != 0) if (strcmp(progname, "sudoedit") != 0)
usage_excl(1); usage_excl(1);
} }
mode = MODE_HELP; mode = MODE_HELP;