Print a more sensible error if yyparse() returns non-zero but
yyerror() was not called.
This commit is contained in:
@@ -822,7 +822,7 @@ init_parser(const char *path, int quiet)
|
|||||||
|
|
||||||
parse_error = false;
|
parse_error = false;
|
||||||
errorlineno = -1;
|
errorlineno = -1;
|
||||||
errorfile = NULL;
|
errorfile = sudoers;
|
||||||
verbose = !quiet;
|
verbose = !quiet;
|
||||||
|
|
||||||
debug_return;
|
debug_return;
|
||||||
|
@@ -791,7 +791,7 @@ init_parser(const char *path, int quiet)
|
|||||||
|
|
||||||
parse_error = false;
|
parse_error = false;
|
||||||
errorlineno = -1;
|
errorlineno = -1;
|
||||||
errorfile = NULL;
|
errorfile = sudoers;
|
||||||
verbose = !quiet;
|
verbose = !quiet;
|
||||||
|
|
||||||
debug_return;
|
debug_return;
|
||||||
|
@@ -118,8 +118,12 @@ sudo_file_parse(struct sudo_nss *nss)
|
|||||||
init_parser(sudoers_file, 0);
|
init_parser(sudoers_file, 0);
|
||||||
yyin = nss->handle;
|
yyin = nss->handle;
|
||||||
if (yyparse() != 0 || parse_error) {
|
if (yyparse() != 0 || parse_error) {
|
||||||
|
if (errorlineno != -1) {
|
||||||
log_error(NO_EXIT, _("parse error in %s near line %d"),
|
log_error(NO_EXIT, _("parse error in %s near line %d"),
|
||||||
errorfile, errorlineno);
|
errorfile, errorlineno);
|
||||||
|
} else {
|
||||||
|
log_error(NO_EXIT, _("parse error in %s"), errorfile);
|
||||||
|
}
|
||||||
debug_return_int(-1);
|
debug_return_int(-1);
|
||||||
}
|
}
|
||||||
debug_return_int(0);
|
debug_return_int(0);
|
||||||
|
Reference in New Issue
Block a user