Author: cem
Date: Thu Mar  1 00:58:59 2018
New Revision: 330136
URL: https://svnweb.freebsd.org/changeset/base/330136

Log:
  psm(4): Always initialize used values in debug print
  
  'status' array passed to get_mouse_status() is usually uninitialized by
  callers.
  
  Fully populating it with values in get_mouse_status() can fail due to
  read_aux_data().
  
  Additionally, nothing in API constrains 'len' to be >= 3.  In practice,
  every caller passes three, so perhaps that argument should just be removed.
  Refactoring is a larger change, though.
  
  Remove use of potentially uninitialized values by:
  1. Only printing 3 debug statuses if the passed array was at least
     'len' >= 3;
  2. Populating 'status' array up to first three elements, if read_aux_data()
     failed.
  
  No functional change intended.
  
  Reported by:  Coverity
  Sponsored by: Dell EMC Isilon

Modified:
  head/sys/dev/atkbdc/psm.c

Modified: head/sys/dev/atkbdc/psm.c
==============================================================================
--- head/sys/dev/atkbdc/psm.c   Thu Mar  1 00:29:52 2018        (r330135)
+++ head/sys/dev/atkbdc/psm.c   Thu Mar  1 00:58:59 2018        (r330136)
@@ -785,9 +785,12 @@ get_mouse_status(KBDC kbdc, int *status, int flag, int
                if (status[i] < 0)
                        break;
        }
-
-       VLOG(1, (LOG_DEBUG, "psm: %s %02x %02x %02x\n",
-           (flag == 1) ? "data" : "status", status[0], status[1], status[2]));
+       if (len >= 3) {
+               for (; i < 3; ++i)
+                       status[i] = 0;
+               VLOG(1, (LOG_DEBUG, "psm: %s %02x %02x %02x\n",
+                   (flag == 1) ? "data" : "status", status[0], status[1], 
status[2]));
+       }
 
        return (i);
 }
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to