]> granicus.if.org Git - sudo/commitdiff
setauthdb() only sets the "old" registry if it was set by a previous
authorTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 20 Jul 2010 16:40:37 +0000 (12:40 -0400)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 20 Jul 2010 16:40:37 +0000 (12:40 -0400)
call to setauthdb().  To restore the original value, passing NULL
(or an empty string) to setauthdb() is sufficient.

common/aix.c

index dc7cd14586cd0eeacc2a37501190e72fcf01edc8..90f907e130828d0c201c01cd666eb5eb037f3192 100644 (file)
@@ -55,10 +55,6 @@ struct aix_limit {
     int factor;
 };
 
-#ifdef HAVE_SETAUTHDB
-static char saved_registry[16]; /* 15 chars plus NUL as per setauthdb(3) */
-#endif
-
 static struct aix_limit aix_limits[] = {
     { RLIMIT_FSIZE, S_UFSIZE, S_UFSIZE_HARD, 512 },
     { RLIMIT_CPU, S_UCPU, S_UCPU_HARD, 1 },
@@ -146,7 +142,7 @@ aix_setauthdb(char *user)
        if (setuserdb(S_READ) != 0)
            error(1, "unable to open userdb");
        if (getuserattr(user, S_REGISTRY, &registry, SEC_CHAR) == 0) {
-           if (setauthdb(registry, saved_registry) != 0)
+           if (setauthdb(registry, NULL) != 0)
                error(1, "unable to switch to registry \"%s\" for %s",
                    registry, user);
        }
@@ -160,11 +156,8 @@ aix_setauthdb(char *user)
 void
 aix_restoreauthdb(void)
 {
-    if (saved_registry[0]) {
-       if (setauthdb(saved_registry, NULL) != 0)
-           error(1, "unable to restore registry \"%s\"", saved_registry);
-       saved_registry[0] = '\0';
-    }
+    if (setauthdb(NULL, NULL) != 0)
+       error(1, "unable to restore registry");
 }
 #endif