summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authoreadler <eadler@FreeBSD.org>2012-02-09 21:06:47 +0000
committereadler <eadler@FreeBSD.org>2012-02-09 21:06:47 +0000
commitc8d9c45343d1af57f79ef8e55c281fb910ade3b9 (patch)
tree7d9d08352dfc99c59d02f30c621e4d25e0504f0f /lib
parent3ae19b58df1490a92cd6b1eff3aee1765ac18806 (diff)
downloadFreeBSD-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')
-rw-r--r--lib/libutil/login_class.c9
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);
}
}
OpenPOWER on IntegriCloud