Skip to content

Commit 7fe2dd2

Browse files
committed
sudo_ldap_build_pass1: clean up groups references on error
Thanks to Joshua Rogers for finding this.
1 parent 7f6de89 commit 7fe2dd2

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

plugins/sudoers/ldap.c

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -956,14 +956,6 @@ sudo_ldap_build_pass1(struct sudoers_context *ctx, LDAP *ld, struct passwd *pw)
956956
}
957957
}
958958

959-
/* Done with groups. */
960-
if (gidlist != NULL)
961-
sudo_gidlist_delref(gidlist);
962-
if (grlist != NULL)
963-
sudo_grlist_delref(grlist);
964-
if (grp != NULL)
965-
sudo_gr_delref(grp);
966-
967959
/* Add netgroups (if any), freeing the list as we go. */
968960
while ((ng = STAILQ_FIRST(&netgroups)) != NULL) {
969961
STAILQ_REMOVE_HEAD(&netgroups, entries);
@@ -997,6 +989,13 @@ sudo_ldap_build_pass1(struct sudoers_context *ctx, LDAP *ld, struct passwd *pw)
997989

998990
CHECK_STRLCAT(buf, ")", sz); /* closes the global OR or the global AND */
999991

992+
out:
993+
if (gidlist != NULL)
994+
sudo_gidlist_delref(gidlist);
995+
if (grlist != NULL)
996+
sudo_grlist_delref(grlist);
997+
if (grp != NULL)
998+
sudo_gr_delref(grp);
1000999
free(notbuf);
10011000
debug_return_str(buf);
10021001
overflow:
@@ -1014,8 +1013,8 @@ sudo_ldap_build_pass1(struct sudoers_context *ctx, LDAP *ld, struct passwd *pw)
10141013
free(ng);
10151014
}
10161015
free(buf);
1017-
free(notbuf);
1018-
debug_return_str(NULL);
1016+
buf = NULL;
1017+
goto out;
10191018
}
10201019

10211020
/*

0 commit comments

Comments
 (0)