Date: Thu, 1 Mar 2018 00:58:59 +0000 (UTC) From: Conrad Meyer <cem@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r330136 - head/sys/dev/atkbdc Message-ID: <201803010058.w210wxaO084821@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201803010058.w210wxaO084821>