diff options
author | eadler <eadler@FreeBSD.org> | 2012-02-09 21:06:47 +0000 |
---|---|---|
committer | eadler <eadler@FreeBSD.org> | 2012-02-09 21:06:47 +0000 |
commit | c8d9c45343d1af57f79ef8e55c281fb910ade3b9 (patch) | |
tree | 7d9d08352dfc99c59d02f30c621e4d25e0504f0f /lib/libutil | |
parent | 3ae19b58df1490a92cd6b1eff3aee1765ac18806 (diff) | |
download | FreeBSD-src-c8d9c45343d1af57f79ef8e55c281fb910ade3b9.zip FreeBSD-src-c8d9c45343d1af57f79ef8e55c281fb910ade3b9.tar.gz |
Fix NULL ptr dereference in setusercontext if pwd is null,
LOGIN_SETPRIORITY is set, and setting the priority (rtprio or
setpriority) fails.
PR: kern/164238
Submitted by: Alexander Wittig <alexander@wittig.name>
Reviewed by: des
Approved by: cperciva
MFC after: 1 month
Diffstat (limited to 'lib/libutil')
-rw-r--r-- | lib/libutil/login_class.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/libutil/login_class.c b/lib/libutil/login_class.c index 68fdf2b..263044f 100644 --- a/lib/libutil/login_class.c +++ b/lib/libutil/login_class.c @@ -452,18 +452,21 @@ setusercontext(login_cap_t *lc, const struct passwd *pwd, uid_t uid, unsigned in p = (rtp.prio > RTP_PRIO_MAX) ? 31 : p; if (rtprio(RTP_SET, 0, &rtp)) syslog(LOG_WARNING, "rtprio '%s' (%s): %m", - pwd->pw_name, lc ? lc->lc_class : LOGIN_DEFCLASS); + pwd ? pwd->pw_name : "-", + lc ? lc->lc_class : LOGIN_DEFCLASS); } else if (p < PRIO_MIN) { rtp.type = RTP_PRIO_REALTIME; rtp.prio = abs(p - PRIO_MIN + RTP_PRIO_MAX); p = (rtp.prio > RTP_PRIO_MAX) ? 1 : p; if (rtprio(RTP_SET, 0, &rtp)) syslog(LOG_WARNING, "rtprio '%s' (%s): %m", - pwd->pw_name, lc ? lc->lc_class : LOGIN_DEFCLASS); + pwd ? pwd->pw_name : "-", + lc ? lc->lc_class : LOGIN_DEFCLASS); } else { if (setpriority(PRIO_PROCESS, 0, (int)p) != 0) syslog(LOG_WARNING, "setpriority '%s' (%s): %m", - pwd->pw_name, lc ? lc->lc_class : LOGIN_DEFCLASS); + pwd ? pwd->pw_name : "-", + lc ? lc->lc_class : LOGIN_DEFCLASS); } } |