Fix the buffer size passed to the EVIOCGBIT ioctl; patch provided by Sebastian Siewior, see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=499414 and http://userweb.kernel.org/~dtor/eviocgbit-bug.html --- joystick-20051019.org/utils/evtest.c 2005-02-06 14:51:42.000000000 +0100 +++ joystick-20051019/utils/evtest.c 2008-09-18 16:01:57.000000000 +0200 @@ -333,14 +333,14 @@ printf("Input device name: \"%s\"\n", name); memset(bit, 0, sizeof(bit)); - ioctl(fd, EVIOCGBIT(0, EV_MAX), bit[0]); + ioctl(fd, EVIOCGBIT(0, sizeof(bit[0])), bit[0]); printf("Supported events:\n"); for (i = 0; i < EV_MAX; i++) if (test_bit(i, bit[0])) { printf(" Event type %d (%s)\n", i, events[i] ? events[i] : "?"); if (!i) continue; - ioctl(fd, EVIOCGBIT(i, KEY_MAX), bit[i]); + ioctl(fd, EVIOCGBIT(i, sizeof(bit[0])), bit[i]); for (j = 0; j < KEY_MAX; j++) if (test_bit(j, bit[i])) { printf(" Event code %d (%s)\n", j, names[i] ? (names[i][j] ? names[i][j] : "?") : "?");