Use sudo_basename() instead of doing the equivalent manually.
This commit is contained in:
@@ -136,7 +136,7 @@ MKTEMP_TEST_OBJS = mktemp_test.lo mktemp.lo
|
||||
|
||||
PARSELN_TEST_OBJS = parseln_test.lo parseln.lo
|
||||
|
||||
PROGNAME_TEST_OBJS = progname_test.lo progname.lo
|
||||
PROGNAME_TEST_OBJS = progname_test.lo progname.lo basename.lo
|
||||
|
||||
CONF_TEST_OBJS = conf_test.lo sudo_conf.lo
|
||||
|
||||
|
@@ -53,8 +53,7 @@ sudo_getprogname(void)
|
||||
void
|
||||
sudo_setprogname(const char *name)
|
||||
{
|
||||
const char *slash = strrchr(name, '/');
|
||||
__progname = slash ? slash + 1 : name;
|
||||
__progname = sudo_basename(name);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -69,9 +68,7 @@ initprogname2(const char *name, const char * const * allowed)
|
||||
name = progname;
|
||||
} else {
|
||||
/* Make sure user-specified name is relative. */
|
||||
const char *slash = strrchr(name, '/');
|
||||
if (slash != NULL)
|
||||
name = slash + 1;
|
||||
name = sudo_basename(name);
|
||||
}
|
||||
|
||||
/* Check for libtool prefix and strip it if present. */
|
||||
|
@@ -37,12 +37,8 @@ main(int argc, char *argv[])
|
||||
{
|
||||
char *progbase = "progname_test";
|
||||
|
||||
if (argc > 0) {
|
||||
if ((progbase = strrchr(argv[0], '/')) != NULL)
|
||||
progbase++;
|
||||
else
|
||||
progbase = argv[0];
|
||||
}
|
||||
if (argc > 0)
|
||||
progbase = sudo_basename(argv[0]);
|
||||
initprogname(progbase);
|
||||
|
||||
/* Make sure getprogname() matches basename of argv[0]. */
|
||||
|
@@ -516,33 +516,25 @@ struct sudo_conf_debug_file_list *
|
||||
sudo_conf_debug_files_v1(const char *progname)
|
||||
{
|
||||
struct sudo_conf_debug *debug_spec;
|
||||
size_t prognamelen, progbaselen;
|
||||
const char *progbase = progname;
|
||||
const char *progbase;
|
||||
debug_decl(sudo_conf_debug_files, SUDO_DEBUG_UTIL);
|
||||
|
||||
/* Determine basename if program is fully qualified (like for plugins). */
|
||||
prognamelen = progbaselen = strlen(progname);
|
||||
if (*progname == '/') {
|
||||
progbase = strrchr(progname, '/');
|
||||
progbaselen = strlen(++progbase);
|
||||
}
|
||||
progbase = progname[0] == '/' ? sudo_basename(progname) : progname;
|
||||
|
||||
/* Convert sudoedit -> sudo. */
|
||||
if (progbaselen > 4 && strcmp(progbase + 4, "edit") == 0) {
|
||||
progbaselen -= 4;
|
||||
}
|
||||
if (strcmp(progbase, "sudoedit") == 0)
|
||||
progbase = "sudo";
|
||||
|
||||
TAILQ_FOREACH(debug_spec, &sudo_conf_data.debugging, entries) {
|
||||
const char *prog = progbase;
|
||||
size_t len = progbaselen;
|
||||
|
||||
if (debug_spec->progname[0] == '/') {
|
||||
/* Match fully-qualified name, if possible. */
|
||||
prog = progname;
|
||||
len = prognamelen;
|
||||
}
|
||||
if (strncmp(debug_spec->progname, prog, len) == 0 &&
|
||||
debug_spec->progname[len] == '\0') {
|
||||
if (strcmp(debug_spec->progname, prog) == 0)
|
||||
debug_return_ptr(&debug_spec->debug_files);
|
||||
}
|
||||
}
|
||||
debug_return_ptr(NULL);
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
@COMPAT_EXP@initprogname
|
||||
initprogname2
|
||||
sudo_basename
|
||||
sudo_basename_v1
|
||||
sudo_conf_askpass_path_v1
|
||||
sudo_conf_clear_paths_v1
|
||||
sudo_conf_debug_files_v1
|
||||
|
Reference in New Issue
Block a user