xserver/dix
Alan Coopersmith 8fa1ac2b50 dix: limit checks to MAX_VALUATORS when generating Xi events
Previously, it was looping through sizeof(ev->valuators.mask) * 8
valuators, where valuators.mask is defined as an array of
(MAX_VALUATORS + 7) / 8 entries.  Since MAX_VALUATORS is defined as 36,
this made it actually loop through 40 entries.  The last 4 bits in this
array should never be set, so we should never access memory outside the
bounds of the arrays defined to be exactly MAX_VALUATORS in length, but
we can make the static analyzer happier and not waste time checking bits
that should never be set.

Found by Oracle Parfait 13.3 static analyzer:

   Read outside array bounds [read-outside-array-bounds]:
      In array dereference of ev->valuators.data[i] with index i
      Array size is 36 elements (of 8 bytes each), index >= 0 and index <= 39
        at line 741 of dix/eventconvert.c in function 'eventToDeviceEvent'.

   Read outside array bounds [read-outside-array-bounds]:
      In array dereference of ev->valuators.data[i] with index i
      Array size is 36 elements (of 8 bytes each), index >= 0 and index <= 39
        at line 808 of dix/eventconvert.c in function 'eventToRawEvent'.

   Read outside array bounds [read-outside-array-bounds]:
      In array dereference of ev->valuators.data_raw[i] with index i
      Array size is 36 elements (of 8 bytes each), index >= 0 and index <= 39
        at line 809 of dix/eventconvert.c in function 'eventToRawEvent'.

Fixes: b2ba77bac ("dix: add EventToXI2 and GetXI2Type.")
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1730>
2024-10-31 16:24:41 +01:00
..
.gitignore Fix spelling/wording issues 2020-07-05 13:07:33 -07:00
BuiltInAtoms R6.6 is the Xorg base-line 2003-11-14 15:54:54 +00:00
atom.c (submit/drop-obsolete-have-dix-config.h) drop obsolete HAVE_DIX_CONFIG_H 2024-09-18 17:23:11 +02:00
callback_priv.h dix: fix duplicate typedef of CallbackListPtr 2024-09-01 22:32:49 +00:00
closestr.h (submit/xnest-gcrec) fix name clash on 'GC' between Xlib and Xserver 2024-09-18 17:23:12 +02:00
color.c (submit/drop-obsolete-have-dix-config.h) drop obsolete HAVE_DIX_CONFIG_H 2024-09-18 17:23:11 +02:00
colormap.c (submit/rename-panoramix-sym) rename old symbol PANORAMIX to XINERAMA 2024-09-18 17:23:12 +02:00
colormap_priv.h dix: move colormap flags into colormap_priv.h and rename them 2024-09-01 22:06:50 +00:00
cursor.c (submit/drop-obsolete-have-dix-config.h) drop obsolete HAVE_DIX_CONFIG_H 2024-09-18 17:23:11 +02:00
cursor_priv.h dix: unexport GetSpritePosition() 2024-09-02 16:43:29 +00:00
devices.c (!1695) dix: unexport Ones() 2024-09-19 15:03:01 +02:00
dispatch.c (submit/rename-panoramix-sym) rename old symbol PANORAMIX to XINERAMA 2024-09-18 17:23:12 +02:00
dispatch.h Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
dix_priv.h dix: lookup function for WindowPtr by XID 2024-09-19 15:03:01 +02:00
dixfonts.c (!1691) os: log: replace VErrorF() by LogVMessageVerb() 2024-09-19 15:03:01 +02:00
dixgrabs_priv.h (!1359) dix: unexport non-public functions from dixgrabs.h and document prototypes 2024-09-18 17:23:09 +02:00
dixstruct_priv.h (submit/recv-fds) os: read file descriptors into client struct at once 2024-09-18 17:23:10 +02:00
dixutils.c (submit/xnest-gcrec) fix name clash on 'GC' between Xlib and Xserver 2024-09-18 17:23:12 +02:00
enterleave.c dix: fix button offset when generating DeviceButtonStateNotify events 2024-10-31 16:24:41 +01:00
enterleave.h mi: reset the PointerWindows reference on screen switch 2023-10-25 00:37:47 +00:00
eventconvert.c dix: limit checks to MAX_VALUATORS when generating Xi events 2024-10-31 16:24:41 +01:00
eventconvert.h dix: unexport eventconvert.h functions 2024-03-11 12:26:44 +01:00
events.c (!1688) os: unexport internal logging functions 2024-09-18 17:23:12 +02:00
exevents_priv.h include: move private definitions out of exevents.h 2024-04-30 00:47:38 +00:00
extension.c (submit/drop-obsolete-have-dix-config.h) drop obsolete HAVE_DIX_CONFIG_H 2024-09-18 17:23:11 +02:00
gc.c (!1695) dix: unexport Ones() 2024-09-19 15:03:01 +02:00
gc_priv.h dix: unexport SetClipRects() 2024-04-15 23:10:31 +00:00
generate-atoms (!1670) dix: drop remains of ancient code generator 2024-09-18 17:23:09 +02:00
gestures.c (submit/drop-obsolete-have-dix-config.h) drop obsolete HAVE_DIX_CONFIG_H 2024-09-18 17:23:11 +02:00
getevents.c (!1691) os: log: replace ErrorFSigSafe() by ErrorF() 2024-09-19 15:03:01 +02:00
globals.c (submit/drop-obsolete-have-dix-config.h) drop obsolete HAVE_DIX_CONFIG_H 2024-09-18 17:23:11 +02:00
glyphcurs.c (submit/drop-obsolete-have-dix-config.h) drop obsolete HAVE_DIX_CONFIG_H 2024-09-18 17:23:11 +02:00
grabs.c (submit/drop-obsolete-have-dix-config.h) drop obsolete HAVE_DIX_CONFIG_H 2024-09-18 17:23:11 +02:00
input_priv.h (submit/split-input.h) include: move private definitions out of input.h 2024-09-18 17:23:11 +02:00
inpututils.c (submit/drop-obsolete-have-dix-config.h) drop obsolete HAVE_DIX_CONFIG_H 2024-09-18 17:23:11 +02:00
lookup.c dix: lookup function for WindowPtr by XID 2024-09-19 15:03:01 +02:00
main.c (submit/rename-panoramix-sym) rename old symbol PANORAMIX to XINERAMA 2024-09-18 17:23:12 +02:00
meson.build dix: lookup function for WindowPtr by XID 2024-09-19 15:03:01 +02:00
pixmap.c (submit/drop-obsolete-have-dix-config.h) drop obsolete HAVE_DIX_CONFIG_H 2024-09-18 17:23:11 +02:00
privates.c (submit/xnest-gcrec) fix name clash on 'GC' between Xlib and Xserver 2024-09-18 17:23:12 +02:00
property.c (submit/rename-panoramix-sym) rename old symbol PANORAMIX to XINERAMA 2024-09-18 17:23:12 +02:00
property_priv.h dix: unexport DeleteAllWindowProperties() 2024-09-02 17:50:47 +00:00
protocol.txt drop remains of DMX 2024-03-05 16:57:52 +01:00
ptrveloc.c (!1691) os: log: replace ErrorFSigSafe() by ErrorF() 2024-09-19 15:03:01 +02:00
ptrveloc_priv.h dix: fix duplicate typedef of MotionTracker and *MotionTrackerPtr 2024-09-01 22:32:49 +00:00
region.c (submit/drop-obsolete-have-dix-config.h) drop obsolete HAVE_DIX_CONFIG_H 2024-09-18 17:23:11 +02:00
registry.c (submit/drop-obsolete-have-dix-config.h) drop obsolete HAVE_DIX_CONFIG_H 2024-09-18 17:23:11 +02:00
registry_priv.h dix: unexport XREGISTRY_UNKNOWN define 2024-03-03 23:20:06 +00:00
resource.c (submit/rename-panoramix-sym) rename old symbol PANORAMIX to XINERAMA 2024-09-18 17:23:12 +02:00
screenint_priv.h dix: fix duplicate typedef of *ScreenPtr 2024-09-01 22:32:49 +00:00
selection.c (submit/drop-obsolete-have-dix-config.h) drop obsolete HAVE_DIX_CONFIG_H 2024-09-18 17:23:11 +02:00
selection_priv.h (submit/selection.h) dix: rename selection.h to selection_priv.h 2024-09-18 17:23:11 +02:00
stubmain.c Allow DDX to provide a main() 2013-07-23 23:56:58 +01:00
swaprep.c (submit/drop-obsolete-have-dix-config.h) drop obsolete HAVE_DIX_CONFIG_H 2024-09-18 17:23:11 +02:00
swapreq.c (submit/drop-obsolete-have-dix-config.h) drop obsolete HAVE_DIX_CONFIG_H 2024-09-18 17:23:11 +02:00
tables.c (submit/drop-obsolete-have-dix-config.h) drop obsolete HAVE_DIX_CONFIG_H 2024-09-18 17:23:11 +02:00
touch.c (!1688) os: unexport internal logging functions 2024-09-18 17:23:12 +02:00
window.c (submit/rename-panoramix-sym) rename old symbol PANORAMIX to XINERAMA 2024-09-18 17:23:12 +02:00