svn commit: r330136 - head/sys/dev/atkbdc

Conrad Meyer cem at FreeBSD.org
Thu Mar 1 00:59:00 UTC 2018


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);
 }


More information about the svn-src-head mailing list