catch case where cmnd_safe is not set (this should not be possible)

This commit is contained in:
Todd C. Miller
1999-04-10 04:37:35 +00:00
parent 59b0cff8cf
commit 8e8fbc251e
3 changed files with 19 additions and 1 deletions

View File

@@ -269,6 +269,12 @@ void log_error(code)
tty, cwd, runas_user);
break;
case NO_CMND_SAFE:
(void) sprintf(p,
"internal error, cmnd_safe never got set for %s; %s", cmnd,
"please report this error to sudo-bugs@courtesan.com");
break;
#ifdef HAVE_KERB5
case GLOBAL_KRB5_INIT_ERR:
(void) sprintf(p, "Could not initialize Kerberos V");
@@ -662,6 +668,11 @@ void inform_user(code)
"Resource allocation failure.\n");
break;
case NO_CMND_SAFE:
(void) fprintf(stderr,
"Internal error, cmnd_safe never got set for %s\n", cmnd);
break;
default:
(void) fprintf(stderr,
"Something weird happened.\n\n");
@@ -720,6 +731,7 @@ static int appropriate(code)
case BAD_STAMPDIR:
case BAD_STAMPFILE:
case BAD_ALLOCATION:
case NO_CMND_SAFE:
default:
return (1);
break;

5
sudo.c
View File

@@ -333,6 +333,11 @@ int main(argc, argv)
if ((sudo_mode & MODE_RESET_HOME) && runas_homedir)
(void) sudo_setenv("HOME", runas_homedir);
/* this *must* have been set if we got a match but... */
if (cmnd_safe == NULL) {
inform_user(NO_CMND_SAFE);
exit(1);
}
#ifndef PROFILING
if ((sudo_mode & MODE_BACKGROUND) && fork() > 0)
exit(0);

3
sudo.h
View File

@@ -161,8 +161,9 @@ struct generic_alias {
#define BAD_STAMPDIR 0x0C
#define BAD_STAMPFILE 0x0D
#define BAD_ALLOCATION 0x0E
#define NO_CMND_SAFE 0x0F
#ifdef HAVE_KERB5
#define GLOBAL_KRB5_INIT_ERR ( 0x0F | GLOBAL_PROBLEM )
#define GLOBAL_KRB5_INIT_ERR ( 0x10 | GLOBAL_PROBLEM )
#endif /* HAVE_KERB5 */
/*