Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Oct 2014 20:18:38 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r273837 - head/lib/libutil
Message-ID:  <201410292018.s9TKIcg1034078@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Wed Oct 29 20:18:37 2014
New Revision: 273837
URL: https://svnweb.freebsd.org/changeset/base/273837

Log:
  Fix a clang 3.5 warning about abs(3) being given an argument of type
  quad_t in setusercontext().  While here, sanitize the clamping of the
  priority value, and use the correct type for the return value of
  login_getcapnum().
  
  Reviewed by:	kib
  MFC after:	3 days

Modified:
  head/lib/libutil/login_class.c

Modified: head/lib/libutil/login_class.c
==============================================================================
--- head/lib/libutil/login_class.c	Wed Oct 29 19:44:34 2014	(r273836)
+++ head/lib/libutil/login_class.c	Wed Oct 29 20:18:37 2014	(r273837)
@@ -424,7 +424,7 @@ setlogincontext(login_cap_t *lc, const s
 int
 setusercontext(login_cap_t *lc, const struct passwd *pwd, uid_t uid, unsigned int flags)
 {
-    quad_t	p;
+    rlim_t	p;
     mode_t	mymask;
     login_cap_t *llc = NULL;
     struct sigaction sa, prevsa;
@@ -449,16 +449,16 @@ setusercontext(login_cap_t *lc, const st
 
 	if (p > PRIO_MAX) {
 	    rtp.type = RTP_PRIO_IDLE;
-	    rtp.prio = p - PRIO_MAX - 1;
-	    p = (rtp.prio > RTP_PRIO_MAX) ? 31 : p;
+	    p -= PRIO_MAX + 1;
+	    rtp.prio = p > RTP_PRIO_MAX ? RTP_PRIO_MAX : p;
 	    if (rtprio(RTP_SET, 0, &rtp))
 		syslog(LOG_WARNING, "rtprio '%s' (%s): %m",
 		    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;
+	    p -= PRIO_MIN - RTP_PRIO_MAX;
+	    rtp.prio = p < RTP_PRIO_MIN ? RTP_PRIO_MIN : p;
 	    if (rtprio(RTP_SET, 0, &rtp))
 		syslog(LOG_WARNING, "rtprio '%s' (%s): %m",
 		    pwd ? pwd->pw_name : "-",



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201410292018.s9TKIcg1034078>