{ NULL, -1 }
};
+extern int sudolineno;
+
/*
* Local prototypes.
*/
int op; /* TRUE or FALSE */
{
struct sudo_defs_types *cur;
- extern int sudolineno;
for (cur = sudo_defs_table; cur->name; cur++) {
if (strcmp(var, cur->name) == 0)
switch (cur->type & T_MASK) {
case T_LOGFAC:
if (!store_syslogfac(val, cur, op)) {
- (void) fprintf(stderr,
- "%s: value '%s' is invalid for option '%s'\n", Argv[0],
- val, var);
+ if (val)
+ (void) fprintf(stderr,
+ "%s: value '%s' is invalid for option '%s'\n", Argv[0],
+ val, var);
+ else
+ (void) fprintf(stderr,
+ "%s: no value specified for `%s' on line %d\n", Argv[0],
+ var, sudolineno);
return(FALSE);
}
break;
case T_LOGPRI:
if (!store_syslogpri(val, cur, op)) {
- (void) fprintf(stderr,
- "%s: value '%s' is invalid for option '%s'\n", Argv[0],
- val, var);
+ if (val)
+ (void) fprintf(stderr,
+ "%s: value '%s' is invalid for option '%s'\n", Argv[0],
+ val, var);
+ else
+ (void) fprintf(stderr,
+ "%s: no value specified for `%s' on line %d\n", Argv[0],
+ var, sudolineno);
return(FALSE);
}
break;
def->sd_un.str = NULL;
return(TRUE);
}
-
#ifdef LOG_NFACILITIES
+ if (!val)
+ return(FALSE);
for (fac = facilities; fac->name && strcmp(val, fac->name); fac++)
;
if (fac->name == NULL)
free(def->sd_un.str);
def->sd_un.str = estrdup(fac->name);
sudo_defs_table[I_LOGFAC].sd_un.ival = fac->num;
+#else
+ if (def->sd_un.str)
+ free(def->sd_un.str);
+ def->sd_un.str = estrdup("default");
#endif /* LOG_NFACILITIES */
return(TRUE);
}
struct strmap *pri;
struct sudo_defs_types *idef;
- if (op == FALSE)
+ if (op == FALSE || !val)
return(FALSE);
if (def == &sudo_defs_table[I_GOODPRISTR])
idef = &sudo_defs_table[I_GOODPRI];