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-all
mailing list