]> granicus.if.org Git - sudo/commitdiff
Print a more sensible error if yyparse() returns non-zero but
authorTodd C. Miller <Todd.Miller@courtesan.com>
Wed, 4 Jan 2012 20:45:03 +0000 (15:45 -0500)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Wed, 4 Jan 2012 20:45:03 +0000 (15:45 -0500)
yyerror() was not called.

plugins/sudoers/gram.c
plugins/sudoers/gram.y
plugins/sudoers/parse.c

index 1ae4ecc68ce9aa03ce6a208fd8c7cfd2a470b792..e8fe89761b38f2df2b7442f1f6604b48257f98a0 100644 (file)
@@ -822,7 +822,7 @@ init_parser(const char *path, int quiet)
 
     parse_error = false;
     errorlineno = -1;
-    errorfile = NULL;
+    errorfile = sudoers;
     verbose = !quiet;
 
     debug_return;
index 3b64fc4ca33e8e054c889bc0a78d47b9221424a7..74ab3731156920b90bbcbe9723bacfa7c050b84e 100644 (file)
@@ -791,7 +791,7 @@ init_parser(const char *path, int quiet)
 
     parse_error = false;
     errorlineno = -1;
-    errorfile = NULL;
+    errorfile = sudoers;
     verbose = !quiet;
 
     debug_return;
index 6d0393830b65d7ac46d30ffb7c34b360c69fdd75..ad1ad70db3b0a740ebe7263456ade542d424e767 100644 (file)
@@ -118,8 +118,12 @@ sudo_file_parse(struct sudo_nss *nss)
     init_parser(sudoers_file, 0);
     yyin = nss->handle;
     if (yyparse() != 0 || parse_error) {
-       log_error(NO_EXIT, _("parse error in %s near line %d"),
-           errorfile, errorlineno);
+       if (errorlineno != -1) {
+           log_error(NO_EXIT, _("parse error in %s near line %d"),
+               errorfile, errorlineno);
+       } else {
+           log_error(NO_EXIT, _("parse error in %s"), errorfile);
+       }
        debug_return_int(-1);
     }
     debug_return_int(0);