don't free string returned by login_getcapstr(3)

OpenBSD and NetBSD require the caller to free strings returned
bu the login_* functions, but FreeBSD requires that callers don't.

Fortunately in this case, we can harmlessly leak as the process is
about to exec the shell/command.

From https://reviews.freebsd.org/D28617 via Ed Maste; ok dtucker@
This commit is contained in:
Damien Miller 2021-02-18 10:33:58 +11:00
parent bc9b0c2570
commit f060c2bc85
1 changed files with 1 additions and 4 deletions

View File

@ -1287,11 +1287,8 @@ do_nologin(struct passwd *pw)
return; return;
nl = def_nl; nl = def_nl;
#endif #endif
if (stat(nl, &sb) == -1) { if (stat(nl, &sb) == -1)
if (nl != def_nl)
free(nl);
return; return;
}
/* /etc/nologin exists. Print its contents if we can and exit. */ /* /etc/nologin exists. Print its contents if we can and exit. */
logit("User %.100s not allowed because %s exists", pw->pw_name, nl); logit("User %.100s not allowed because %s exists", pw->pw_name, nl);