mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-05 08:00:30 +00:00
After calling login_getclass, be sure to call login_close so that
we don't leak memory. Only one of these two cases (reconfig) actually causes a leak because the other is usually followed by an exec. PR: 46845 Reviewed by: David Wang <dsw@juniper.net> MFC after: 2 weeks
This commit is contained in:
parent
7931af6934
commit
c40f2eef16
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=111323
|
@ -833,6 +833,7 @@ main(int argc, char **argv)
|
||||||
sep->se_service, sep->se_user);
|
sep->se_service, sep->se_user);
|
||||||
_exit(EX_OSERR);
|
_exit(EX_OSERR);
|
||||||
}
|
}
|
||||||
|
login_close(lc);
|
||||||
#else
|
#else
|
||||||
if (pwd->pw_uid) {
|
if (pwd->pw_uid) {
|
||||||
if (setlogin(sep->se_user) < 0) {
|
if (setlogin(sep->se_user) < 0) {
|
||||||
|
@ -971,6 +972,9 @@ config(void)
|
||||||
struct servtab *sep, *new, **sepp;
|
struct servtab *sep, *new, **sepp;
|
||||||
long omask;
|
long omask;
|
||||||
int new_nomapped;
|
int new_nomapped;
|
||||||
|
#ifdef LOGIN_CAP
|
||||||
|
login_cap_t *lc = NULL;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!setconfig()) {
|
if (!setconfig()) {
|
||||||
syslog(LOG_ERR, "%s: %m", CONFIG);
|
syslog(LOG_ERR, "%s: %m", CONFIG);
|
||||||
|
@ -992,13 +996,14 @@ config(void)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
#ifdef LOGIN_CAP
|
#ifdef LOGIN_CAP
|
||||||
if (login_getclass(new->se_class) == NULL) {
|
if ((lc = login_getclass(new->se_class)) == NULL) {
|
||||||
/* error syslogged by getclass */
|
/* error syslogged by getclass */
|
||||||
syslog(LOG_ERR,
|
syslog(LOG_ERR,
|
||||||
"%s/%s: %s: login class error, service ignored",
|
"%s/%s: %s: login class error, service ignored",
|
||||||
new->se_service, new->se_proto, new->se_class);
|
new->se_service, new->se_proto, new->se_class);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
login_close(lc);
|
||||||
#endif
|
#endif
|
||||||
new_nomapped = new->se_nomapped;
|
new_nomapped = new->se_nomapped;
|
||||||
for (sep = servtab; sep; sep = sep->se_next)
|
for (sep = servtab; sep; sep = sep->se_next)
|
||||||
|
|
Loading…
Reference in a new issue