]> granicus.if.org Git - sudo/commitdiff
Don't clobber errno after calling check_sudoers().
authorTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 2 Feb 1999 22:54:04 +0000 (22:54 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 2 Feb 1999 22:54:04 +0000 (22:54 +0000)
sudo.c

diff --git a/sudo.c b/sudo.c
index f1c39025fe12d06edd479e4806ba6cf242faa1e0..a17e7383bc745d60cd667b27aaf690de6cb8d43a 100644 (file)
--- a/sudo.c
+++ b/sudo.c
@@ -191,7 +191,8 @@ int main(argc, argv)
     int argc;
     char **argv;
 {
-    int rtn, cmnd_status = FOUND;
+    int rtn, serrno;
+    int cmnd_status = FOUND;
     int sudo_mode = MODE_RUN;
     extern char ** environ;
 
@@ -290,8 +291,10 @@ int main(argc, argv)
 
     rtn = check_sudoers();     /* check mode/owner on _PATH_SUDO_SUDOERS */
     if (rtn != ALL_SYSTEMS_GO) {
+       serrno = errno;
        log_error(rtn);
        set_perms(PERM_FULL_USER, sudo_mode);
+       errno = serrno;
        inform_user(rtn);
        exit(1);
     }
@@ -902,7 +905,7 @@ static int check_sudoers()
      */
     set_perms(PERM_SUDOERS, 0);
 
-    if (lstat(_PATH_SUDO_SUDOERS, &statbuf) != 0 && rootstat != 0)
+    if (rootstat != 0 && lstat(_PATH_SUDO_SUDOERS, &statbuf) != 0)
        rtn = NO_SUDOERS_FILE;
     else if (!S_ISREG(statbuf.st_mode))
        rtn = SUDOERS_NOT_FILE;