From: Todd C. Miller Date: Tue, 20 Jul 2010 16:40:47 +0000 (-0400) Subject: setauthdb() only sets the "old" registry if it was set by a previous X-Git-Tag: SUDO_1_7_4~50 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b7e203c39c0c3f1f2644c78a81c111e14a1321e9;p=sudo setauthdb() only sets the "old" registry if it was set by a previous call to setauthdb(). To restore the original value, passing NULL (or an empty string) to setauthdb() is sufficient. --HG-- branch : 1.7 --- diff --git a/aix.c b/aix.c index 4b8810f61..5735ec97a 100644 --- a/aix.c +++ b/aix.c @@ -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 }, @@ -151,7 +147,7 @@ aix_setauthdb(user) if (setuserdb(S_READ) != 0) error(1, "unable to open userdb"); if (getuserattr(user, S_REGISTRY, ®istry, 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); } @@ -165,11 +161,8 @@ aix_setauthdb(user) void aix_restoreauthdb() { - 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