]> granicus.if.org Git - strace/commitdiff
evdev: fix off-by-one error in decode_bitset
authorEugene Syromiatnikov <esyr@redhat.com>
Thu, 20 Dec 2018 15:35:27 +0000 (16:35 +0100)
committerDmitry V. Levin <ldv@altlinux.org>
Sun, 23 Dec 2018 22:12:36 +0000 (22:12 +0000)
* evdev.c (decode_bitset): Decrement sorted/indexed xlat's size by one
in order to account for guarding XLAT_END, as other sorted/indexed xlat
wrappers do.

Fixes: v4.23~261 "evdev: support various types of xlats in decode_bitset"
evdev.c

diff --git a/evdev.c b/evdev.c
index 325477c73bcbbb0882944e822760ae95dd93f65e..8d22d08ea42310e554f95e49ebd1d08e1f481145 100644 (file)
--- a/evdev.c
+++ b/evdev.c
@@ -188,7 +188,7 @@ decode_bitset_(struct tcb *const tcp, const kernel_ulong_t arg,
 
 #define decode_bitset(tcp_, arg_, decode_nr_, max_nr_, dflt_, xt_) \
        decode_bitset_((tcp_), (arg_), (decode_nr_), (max_nr_), \
-                      (dflt_), ARRAY_SIZE(decode_nr_), (xt_))
+                      (dflt_), ARRAY_SIZE(decode_nr_) - 1, (xt_))
 
 # ifdef EVIOCGMTSLOTS
 static int