libXi 1.8.4 XGetDeviceControl: set DEVICE_ENABLE length to the struct size XGetDeviceControl: size DEVICE_ENABLE replies for XDeviceEnableState XGetDeviceControl: require reply control to match the request Set num_classes to number of copied classes in copyDeviceChangedEvent Track XIValuatorClass correctly during copyDeviceChangedEvent Track unknown classes correctly during copyDeviceChangedEvent Add missing touch and gesture class handling to copyDeviceChangedEvent XListInputDevices: make sure we have enough bytes for the info Fix potential for class size mismatches Actually copy the full keycodes in copy_classes wireToEnterLeave: validate the valuator count to avoid OOB writes wireToEnterLeave: validate buttons_len against the received event size XListInputDevices: validate class lengths cumulatively in SizeClassInfo XListInputDevices: validate device name lengths against reply buffer XIQueryDevice: keep padded name and class bytes within the reply size_classes/copy_classes: enforce XI2 per-type class payload sizes size_classes/copy_classes: bound XI2 class lengths to the received buffer XQueryDeviceState: check ValuatorClass num_valuators against class length Strip trailing whitespace from source files