Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

wcmUSB: fix undefined behavior for bit-shifting #330

Merged
merged 2 commits into from
Dec 5, 2023

Conversation

whot
Copy link
Member

@whot whot commented Nov 30, 2023

This fixes #329 which fixed the undefined behavior but that was caused by the wrong type. cc @jigpu

whot added 2 commits December 1, 2023 09:14
This fixed the wrong issue, the undefined behavior was caused by
(1 << btn) defaulting to int rather than unsigned int. See the follow-up
commit for a fix.

This reverts commit bf61b3e.
Automated test runs have detected the following issue while running UBSan
checks:

~~~
../src/wcmUSB.c:1372:11: runtime error: left shift of 1 by 31 places cannot
 be represented in type 'int'
   	#0 0x7f0444bcbd8c in mod_buttons ../src/wcmUSB.c:1372
   	linuxwacom#1 0x7f0444bd7f26 in test_mod_buttons ../src/wcmUSB.c:2090
   	linuxwacom#2 0x7f0444bfcea7 in wcm_run_tests ../test/wacom-test-suite.c:46
   	linuxwacom#3 0x56204d77b405 in main ../test/wacom-tests.c:44
   	linuxwacom#4 0x7f0448625082 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24082)
   	linuxwacom#5 0x56204d77b1cd in _start (/home/runner/work/xf86-input-wacom/xf86-input-wacom/builddir/wacom-tests+0x11cd)

SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../src/wcmUSB.c:1372:11 in

The default type of a literal `1` is `int` and thus a leftshift of 31 is
not permitted. Switch it to `1u` and thus `unsigned int` for Button 31
which is the max button we support (if zero-indexed).

Link: https://github.com/linuxwacom/xf86-input-wacom/actions/runs/7049012015/job/19186502078
Signed-off-by: Peter Hutterer <[email protected]>
@jigpu
Copy link
Member

jigpu commented Dec 5, 2023

LGTM. Wish I had thought of it 😅

@jigpu jigpu merged commit f963825 into linuxwacom:master Dec 5, 2023
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants