From f3b397be0faa09b1737f15529a4913b6a3b1c6d3 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Tue, 20 Jul 2010 12:40:37 -0400 Subject: [PATCH] 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. --- common/aix.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/common/aix.c b/common/aix.c index dc7cd1458..90f907e13 100644 --- a/common/aix.c +++ b/common/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 }, @@ -146,7 +142,7 @@ aix_setauthdb(char *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); } @@ -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 -- 2.50.0