]> granicus.if.org Git - sudo/commitdiff
delref sudo_user.pw, runas_pw and runas_gr immediately before we return.
authorTodd C. Miller <Todd.Miller@courtesan.com>
Fri, 6 Aug 2010 16:07:03 +0000 (12:07 -0400)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Fri, 6 Aug 2010 16:07:03 +0000 (12:07 -0400)
plugins/sudoers/sudoers.c

index 47b07d670af952621ec7cbeff98771417db4fa22..d51998688ccc0411711556389356f3584e69d5d5 100644 (file)
@@ -585,10 +585,6 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[],
     (void) sigaction(SIGQUIT, &saved_sa_quit, NULL);
     (void) sigaction(SIGTSTP, &saved_sa_tstp, NULL);
 
-    /* Close the password and group files and free up memory. */
-    sudo_endpwent();
-    sudo_endgrent();
-
     if (ISSET(sudo_mode, MODE_EDIT)) {
        char *editor = find_editor(NewArgc - 1, NewArgv + 1, &edit_argv);
        if (!editor)
@@ -654,6 +650,14 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[],
     restore_perms();
 
 done:
+    /* Close the password and group files and free up memory. */
+    sudo_endpwent();
+    sudo_endgrent();
+    pw_delref(sudo_user.pw);
+    pw_delref(runas_pw);
+    if (runas_gr != NULL)
+       gr_delref(runas_gr);
+
     return rval;
 }