Author: dim
Date: Sat Nov  1 13:45:01 2014
New Revision: 273931
URL: https://svnweb.freebsd.org/changeset/base/273931

Log:
  MFC r273837:
  
  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

Modified:
  stable/9/lib/libutil/login_class.c
Directory Properties:
  stable/9/lib/libutil/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/10/lib/libutil/login_class.c
  stable/7/lib/libutil/login_class.c
  stable/8/lib/libutil/login_class.c
Directory Properties:
  stable/10/   (props changed)
  stable/7/lib/libutil/   (props changed)
  stable/8/lib/libutil/   (props changed)

Modified: stable/9/lib/libutil/login_class.c
==============================================================================
--- stable/9/lib/libutil/login_class.c  Sat Nov  1 11:19:50 2014        
(r273930)
+++ stable/9/lib/libutil/login_class.c  Sat Nov  1 13:45:01 2014        
(r273931)
@@ -423,7 +423,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;
@@ -448,16 +448,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 : "-",
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to