Hello community, here is the log from the commit of package xf86-input-wacom for openSUSE:Factory checked in at 2013-12-11 17:40:18 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xf86-input-wacom (Old) and /work/SRC/openSUSE:Factory/.xf86-input-wacom.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xf86-input-wacom" Changes: -------- --- /work/SRC/openSUSE:Factory/xf86-input-wacom/xf86-input-wacom.changes 2013-08-19 10:53:16.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.xf86-input-wacom.new/xf86-input-wacom.changes 2013-12-11 17:40:19.000000000 +0100 @@ -1,0 +2,10 @@ +Sat Dec 7 23:03:46 UTC 2013 - [email protected] + +- Update to version 0.23.0: + + Correct return value of special_map_button. + + Fix buffer overflows in 'special_map_*'. + + Add support for Intuos Pro series. + + strdup the option key/values in our input_option_new. + + Print list of supported models on wcmPlug. + +------------------------------------------------------------------- Old: ---- xf86-input-wacom-0.22.1.tar.bz2 New: ---- xf86-input-wacom-0.23.0.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xf86-input-wacom.spec ++++++ --- /var/tmp/diff_new_pack.Aye3PB/_old 2013-12-11 17:40:20.000000000 +0100 +++ /var/tmp/diff_new_pack.Aye3PB/_new 2013-12-11 17:40:20.000000000 +0100 @@ -23,7 +23,7 @@ %endif Name: xf86-input-wacom -Version: 0.22.1 +Version: 0.23.0 Release: 0 Summary: Wacom input driver for the Xorg X server License: GPL-2.0+ ++++++ xf86-input-wacom-0.22.1.tar.bz2 -> xf86-input-wacom-0.23.0.tar.bz2 ++++++ ++++ 2073 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.22.1/ChangeLog new/xf86-input-wacom-0.23.0/ChangeLog --- old/xf86-input-wacom-0.22.1/ChangeLog 2013-07-15 19:06:35.000000000 +0200 +++ new/xf86-input-wacom-0.23.0/ChangeLog 2013-09-28 01:43:04.000000000 +0200 @@ -1,3 +1,137 @@ +commit 5395d18c4bbaa0d9ea96617ad41bd94848fb05e9 +Author: Jason Gerecke <[email protected]> +Date: Fri Sep 27 16:42:39 2013 -0700 + + wacom 0.23.0 + + Signed-off-by: Jason Gerecke <[email protected]> + +commit eef947af1447df58099a005834de394edb4b03d0 +Author: Jason Gerecke <[email protected]> +Date: Thu Sep 19 17:08:13 2013 -0700 + + wacom 0.22.99.1 + + Signed-off-by: Jason Gerecke <[email protected]> + +commit 6cadaf2eabb91e47963054e1628374861fea6209 +Author: Jason Gerecke <[email protected]> +Date: Wed Sep 11 09:55:46 2013 -0700 + + Correct return value of special_map_button + + The 'special_map_*' functions called by 'parse_actions' are expected + to return a count of the number of words of input they have consumed. + The 'special_map_buttom' function errounously returns the number of + actions added instead, causing the program to potentially skip over + requested actions which follow a list of "button" actions. + + Signed-off-by: Jason Gerecke <[email protected]> + +commit cde2718ac432f5d745b9ff5ccf6d4f8c2f4fc499 +Author: Jason Gerecke <[email protected]> +Date: Wed Sep 11 09:30:37 2013 -0700 + + Fix buffer overflows in 'special_map_*' + + Each of the 'special_map_*' functions is given free reign to write + to the end of a buffer, but is never given the size of the buffer + itself. It is trivial to trigger an overflow simply by feeding the + program more actions to perform than space to store them. + + This patch adds an argument to each function which contains the + buffer's size. The functions check for sufficient space before + writing to the buffer and will print out an error message if + it isn't available. + + Signed-off-by: Jason Gerecke <[email protected]> + +commit 59086ba4f5caf4cf6f52f80b5ca36144a882daa5 +Author: Ping Cheng <[email protected]> +Date: Tue Sep 10 16:42:22 2013 -0700 + + Add support for Intuos Pro series + + Reviewed-by: Peter Hutterer <[email protected]> + Signed-off-by: Ping Cheng <[email protected]> + Signed-off-by: Peter Hutterer <[email protected]> + +commit cb14924a2a5be21c8525ca70932ab8b5f0f99752 +Author: Peter Hutterer <[email protected]> +Date: Wed Sep 4 17:04:13 2013 +1000 + + strdup the option key/values in our input_option_new + + This is a interface for servers with ABI < 14 (up to server 1.11). + The server version of it strdups the values, so we must do the same. + + Otherwise the values assigned to the InputOption list in + wcmOptionDupConvert are freed during xf86OptionListFree(). + + That later causes a SIGABORT when NewInputDeviceRequest starts using + those options. + + https://sourceforge.net/p/linuxwacom/bugs/233/ + + Signed-off-by: Peter Hutterer <[email protected]> + Acked-by: Ping Cheng <[email protected]> + +commit 39c4c7fca7db19ac550332fa53d0d4f58a26f67f +Author: Peter Hutterer <[email protected]> +Date: Sat Aug 31 14:35:58 2013 +1000 + + Print list of supported models on wcmPlug + + When the driver starts, print the list of supported models. This should + help with any questions like "does my driver support this or that model". + + For those models that don't have a defined name, print "usb:1234:5678" + instead, so users can at least try to match the usb IDs. + + Sample log output: + [ 25950.166] (II) wacom: Driver for Wacom graphics tablets: PenPartner, PenPartner, + Graphire, Graphire2 4x5, Graphire2 5x7, Graphire3 4x5, Graphire3 6x8, + Graphire4 4x5, Graphire4 6x8, BambooFun 4x5, BambooFun 6x8, + Bamboo1 Medium, Graphire4 6x8 BlueTooth, CTL-460, CTH-461, CTL-660, + CTL-461/S, Bamboo Touch, CTH-460/K, CTH-461/S, CTH-661/S1, CTH-461/L, + CTH-661/L, Intuos 4x5, Intuos 6x8, Intuos 9x12, Intuos 12x12, + Intuos 12x18, PTU600, PL400, PL500, PL600, PL600SX, PL550, PL800, + PL700, PL510, PL710, DTI520, DTF720, DTF720a, DTF521, DTU1931, + DTU2231, DTU1631, Intuos2 4x5, Intuos2 6x8, Intuos2 9x12, + Intuos2 12x12, Intuos2 12x18, Intuos2 6x8 , Volito, PenStation, + Volito2 4x5, Volito2 2x3, PenPartner2, Bamboo, Bamboo1, Bamboo1 4x6, + Bamboo1 5x8, Intuos3 4x5, Intuos3 6x8, Intuos3 9x12, Intuos3 12x12, + Intuos3 12x19, Intuos3 6x11, Intuos3 4x6, Intuos4 4x6, Intuos4 6x9, + Intuos4 8x13, Intuos4 12x19, Intuos4 WL USB Endpoint, + Intuos4 WL Bluetooth Endpoint, Intuos5 touch S, Intuos5 touch M, + Intuos5 touch L, Intuos5 S, Intuos5 M, Cintiq 21UX, Cintiq 20WSX, + Cintiq 12WX, Cintiq 21UX2, Cintiq 24HD, Cintiq 22HD, + Cintiq 24HD touch (EMR digitizer), Cintiq 13HD, DTK2241, DTH2242, + Cintiq 22HDT, TabletPC 0x90, TabletPC 0x93, TabletPC 0x97, + TabletPC 0x9A, CapPlus 0x9F, TabletPC 0xE2, TabletPC 0xE3, + TabletPC 0xE5, TabletPC 0xE6, TabletPC 0xEC, TabletPC 0xED, + TabletPC 0xEF, TabletPC 0x100, TabletPC 0x101, TabletPC 0x10D, + TabletPC 0x4001, usb:172f:0024, usb:172f:0025, usb:172f:0026, + usb:172f:0027, usb:172f:0028, usb:172f:0030, usb:172f:0031, + usb:172f:0032, usb:172f:0033, usb:172f:0034, usb:172f:0035, + usb:172f:0036, usb:172f:0037, usb:172f:0038, usb:172f:0039, + usb:172f:0051, usb:172f:0052, usb:172f:0053, usb:172f:0054, + usb:172f:0055, usb:172f:0056, usb:172f:0057, usb:172f:0058, + usb:172f:0500, usb:172f:0501, usb:172f:0502, usb:172f:0503, + usb:1b96:0001, usb:17ef:6004 + [ 25950.167] (II) Using input driver 'wacom' for 'Wacom Intuos4 6x9' + + Signed-off-by: Peter Hutterer <[email protected]> + Acked-by: Ping Cheng <[email protected]> + +commit 3f95c4c58afd25e7c8a3ab18dad936f615cfd189 +Author: Jason Gerecke <[email protected]> +Date: Mon Jul 15 10:09:40 2013 -0700 + + wacom 0.22.1 + + Signed-off-by: Jason Gerecke <[email protected]> + commit b25eb646c36d19a46c561b3c091adb5c86c563df Author: Peter Hutterer <[email protected]> Date: Fri Jul 12 10:28:08 2013 +1000 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.22.1/configure.ac new/xf86-input-wacom-0.23.0/configure.ac --- old/xf86-input-wacom-0.22.1/configure.ac 2013-07-15 19:04:34.000000000 +0200 +++ new/xf86-input-wacom-0.23.0/configure.ac 2013-09-28 01:41:45.000000000 +0200 @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xf86-input-wacom], - [0.22.1], + [0.23.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xf86-input-wacom]) AC_CONFIG_MACRO_DIR([m4]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.22.1/src/wcmConfig.c new/xf86-input-wacom-0.23.0/src/wcmConfig.c --- old/xf86-input-wacom-0.22.1/src/wcmConfig.c 2013-07-15 19:01:59.000000000 +0200 +++ new/xf86-input-wacom-0.23.0/src/wcmConfig.c 2013-09-20 02:05:07.000000000 +0200 @@ -659,6 +659,9 @@ int* errmin) { xf86AddInputDriver(&WACOM, module, 0); + + usbListModels(); + return module; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.22.1/src/wcmUSB.c new/xf86-input-wacom-0.23.0/src/wcmUSB.c --- old/xf86-input-wacom-0.22.1/src/wcmUSB.c 2013-07-15 19:01:59.000000000 +0200 +++ new/xf86-input-wacom-0.23.0/src/wcmUSB.c 2013-09-20 02:05:07.000000000 +0200 @@ -97,6 +97,7 @@ DEFINE_MODEL(usbIntuos3, "USB Intuos3", 5); DEFINE_MODEL(usbIntuos4, "USB Intuos4", 5); DEFINE_MODEL(usbIntuos5, "USB Intuos5", 5); +DEFINE_MODEL(usbIntuosPro, "USB Intuos Pro", 5); DEFINE_MODEL(usbVolito, "USB Volito", 4); DEFINE_MODEL(usbVolito2, "USB Volito2", 4); DEFINE_MODEL(usbCintiqV5, "USB CintiqV5", 5); @@ -172,172 +173,218 @@ BTN_SIDE, BTN_EXTRA }; -static struct +static struct WacomModelDesc { const unsigned int vendor_id; const unsigned int model_id; int yRes; /* tablet Y resolution in units/meter */ int xRes; /* tablet X resolution in units/meter */ WacomModelPtr model; + const char *name; } WacomModelDesc [] = { - { WACOM_VENDOR_ID, 0x00, 39370, 39370, &usbPenPartner }, /* PenPartner */ - { WACOM_VENDOR_ID, 0x10, 80000, 80000, &usbGraphire }, /* Graphire */ - { WACOM_VENDOR_ID, 0x11, 80000, 80000, &usbGraphire2 }, /* Graphire2 4x5 */ - { WACOM_VENDOR_ID, 0x12, 80000, 80000, &usbGraphire2 }, /* Graphire2 5x7 */ - { WACOM_VENDOR_ID, 0x13, 80000, 80000, &usbGraphire3 }, /* Graphire3 4x5 */ - { WACOM_VENDOR_ID, 0x14, 80000, 80000, &usbGraphire3 }, /* Graphire3 6x8 */ - { WACOM_VENDOR_ID, 0x15, 80000, 80000, &usbGraphire4 }, /* Graphire4 4x5 */ - { WACOM_VENDOR_ID, 0x16, 80000, 80000, &usbGraphire4 }, /* Graphire4 6x8 */ - { WACOM_VENDOR_ID, 0x17, 100000, 100000, &usbBambooFun }, /* BambooFun 4x5 */ - { WACOM_VENDOR_ID, 0x18, 100000, 100000, &usbBambooFun }, /* BambooFun 6x8 */ - { WACOM_VENDOR_ID, 0x19, 80000, 80000, &usbBamboo1 }, /* Bamboo1 Medium*/ - { WACOM_VENDOR_ID, 0x81, 80000, 80000, &usbGraphire4 }, /* Graphire4 6x8 BlueTooth */ - - { WACOM_VENDOR_ID, 0xD1, 100000, 100000, &usbBamboo }, /* CTL-460 */ - { WACOM_VENDOR_ID, 0xD4, 100000, 100000, &usbBamboo }, /* CTH-461 */ - { WACOM_VENDOR_ID, 0xD3, 100000, 100000, &usbBamboo }, /* CTL-660 */ - { WACOM_VENDOR_ID, 0xD2, 100000, 100000, &usbBamboo }, /* CTL-461/S */ - { WACOM_VENDOR_ID, 0xD0, 100000, 100000, &usbBamboo }, /* Bamboo Touch */ - { WACOM_VENDOR_ID, 0xD6, 100000, 100000, &usbBamboo }, /* CTH-460/K */ - { WACOM_VENDOR_ID, 0xD7, 100000, 100000, &usbBamboo }, /* CTH-461/S */ - { WACOM_VENDOR_ID, 0xD8, 100000, 100000, &usbBamboo }, /* CTH-661/S1 */ - { WACOM_VENDOR_ID, 0xDA, 100000, 100000, &usbBamboo }, /* CTH-461/L */ - { WACOM_VENDOR_ID, 0xDB, 100000, 100000, &usbBamboo }, /* CTH-661/L */ - - { WACOM_VENDOR_ID, 0x20, 100000, 100000, &usbIntuos }, /* Intuos 4x5 */ - { WACOM_VENDOR_ID, 0x21, 100000, 100000, &usbIntuos }, /* Intuos 6x8 */ - { WACOM_VENDOR_ID, 0x22, 100000, 100000, &usbIntuos }, /* Intuos 9x12 */ - { WACOM_VENDOR_ID, 0x23, 100000, 100000, &usbIntuos }, /* Intuos 12x12 */ - { WACOM_VENDOR_ID, 0x24, 100000, 100000, &usbIntuos }, /* Intuos 12x18 */ - - { WACOM_VENDOR_ID, 0x03, 20000, 20000, &usbCintiqPartner }, /* PTU600 */ - - { WACOM_VENDOR_ID, 0x30, 20000, 20000, &usbCintiq }, /* PL400 */ - { WACOM_VENDOR_ID, 0x31, 20000, 20000, &usbCintiq }, /* PL500 */ - { WACOM_VENDOR_ID, 0x32, 20000, 20000, &usbCintiq }, /* PL600 */ - { WACOM_VENDOR_ID, 0x33, 20000, 20000, &usbCintiq }, /* PL600SX */ - { WACOM_VENDOR_ID, 0x34, 20000, 20000, &usbCintiq }, /* PL550 */ - { WACOM_VENDOR_ID, 0x35, 20000, 20000, &usbCintiq }, /* PL800 */ - { WACOM_VENDOR_ID, 0x37, 20000, 20000, &usbCintiq }, /* PL700 */ - { WACOM_VENDOR_ID, 0x38, 20000, 20000, &usbCintiq }, /* PL510 */ - { WACOM_VENDOR_ID, 0x39, 20000, 20000, &usbCintiq }, /* PL710 */ - { WACOM_VENDOR_ID, 0x3A, 20000, 20000, &usbCintiq }, /* DTI520 */ - { WACOM_VENDOR_ID, 0xC0, 20000, 20000, &usbCintiq }, /* DTF720 */ - { WACOM_VENDOR_ID, 0xC2, 20000, 20000, &usbCintiq }, /* DTF720a */ - { WACOM_VENDOR_ID, 0xC4, 20000, 20000, &usbCintiq }, /* DTF521 */ - { WACOM_VENDOR_ID, 0xC7, 100000, 100000, &usbCintiq }, /* DTU1931 */ - { WACOM_VENDOR_ID, 0xCE, 100000, 100000, &usbCintiq }, /* DTU2231 */ - { WACOM_VENDOR_ID, 0xF0, 100000, 100000, &usbCintiq }, /* DTU1631 */ - - { WACOM_VENDOR_ID, 0x41, 100000, 100000, &usbIntuos2 }, /* Intuos2 4x5 */ - { WACOM_VENDOR_ID, 0x42, 100000, 100000, &usbIntuos2 }, /* Intuos2 6x8 */ - { WACOM_VENDOR_ID, 0x43, 100000, 100000, &usbIntuos2 }, /* Intuos2 9x12 */ - { WACOM_VENDOR_ID, 0x44, 100000, 100000, &usbIntuos2 }, /* Intuos2 12x12 */ - { WACOM_VENDOR_ID, 0x45, 100000, 100000, &usbIntuos2 }, /* Intuos2 12x18 */ - { WACOM_VENDOR_ID, 0x47, 100000, 100000, &usbIntuos2 }, /* Intuos2 6x8 */ - - { WACOM_VENDOR_ID, 0x60, 50000, 50000, &usbVolito }, /* Volito */ - - { WACOM_VENDOR_ID, 0x61, 50000, 50000, &usbVolito2 }, /* PenStation */ - { WACOM_VENDOR_ID, 0x62, 50000, 50000, &usbVolito2 }, /* Volito2 4x5 */ - { WACOM_VENDOR_ID, 0x63, 50000, 50000, &usbVolito2 }, /* Volito2 2x3 */ - { WACOM_VENDOR_ID, 0x64, 50000, 50000, &usbVolito2 }, /* PenPartner2 */ - - { WACOM_VENDOR_ID, 0x65, 100000, 100000, &usbBamboo }, /* Bamboo */ - { WACOM_VENDOR_ID, 0x69, 39842, 39842, &usbBamboo1 }, /* Bamboo1 */ - { WACOM_VENDOR_ID, 0x6A, 100000, 100000, &usbBamboo1 }, /* Bamboo1 4x6 */ - { WACOM_VENDOR_ID, 0x6B, 100000, 100000, &usbBamboo1 }, /* Bamboo1 5x8 */ - - { WACOM_VENDOR_ID, 0xB0, 200000, 200000, &usbIntuos3 }, /* Intuos3 4x5 */ - { WACOM_VENDOR_ID, 0xB1, 200000, 200000, &usbIntuos3 }, /* Intuos3 6x8 */ - { WACOM_VENDOR_ID, 0xB2, 200000, 200000, &usbIntuos3 }, /* Intuos3 9x12 */ - { WACOM_VENDOR_ID, 0xB3, 200000, 200000, &usbIntuos3 }, /* Intuos3 12x12 */ - { WACOM_VENDOR_ID, 0xB4, 200000, 200000, &usbIntuos3 }, /* Intuos3 12x19 */ - { WACOM_VENDOR_ID, 0xB5, 200000, 200000, &usbIntuos3 }, /* Intuos3 6x11 */ - { WACOM_VENDOR_ID, 0xB7, 200000, 200000, &usbIntuos3 }, /* Intuos3 4x6 */ - - { WACOM_VENDOR_ID, 0xB8, 200000, 200000, &usbIntuos4 }, /* Intuos4 4x6 */ - { WACOM_VENDOR_ID, 0xB9, 200000, 200000, &usbIntuos4 }, /* Intuos4 6x9 */ - { WACOM_VENDOR_ID, 0xBA, 200000, 200000, &usbIntuos4 }, /* Intuos4 8x13 */ - { WACOM_VENDOR_ID, 0xBB, 200000, 200000, &usbIntuos4 }, /* Intuos4 12x19*/ - { WACOM_VENDOR_ID, 0xBC, 200000, 200000, &usbIntuos4 }, /* Intuos4 WL USB Endpoint */ - { WACOM_VENDOR_ID, 0xBD, 200000, 200000, &usbIntuos4 }, /* Intuos4 WL Bluetooth Endpoint */ - - { WACOM_VENDOR_ID, 0x26, 200000, 200000, &usbIntuos5 }, /* Intuos5 touch S */ - { WACOM_VENDOR_ID, 0x27, 200000, 200000, &usbIntuos5 }, /* Intuos5 touch M */ - { WACOM_VENDOR_ID, 0x28, 200000, 200000, &usbIntuos5 }, /* Intuos5 touch L */ - { WACOM_VENDOR_ID, 0x29, 200000, 200000, &usbIntuos5 }, /* Intuos5 S */ - { WACOM_VENDOR_ID, 0x2A, 200000, 200000, &usbIntuos5 }, /* Intuos5 M */ - - { WACOM_VENDOR_ID, 0x3F, 200000, 200000, &usbCintiqV5 }, /* Cintiq 21UX */ - { WACOM_VENDOR_ID, 0xC5, 200000, 200000, &usbCintiqV5 }, /* Cintiq 20WSX */ - { WACOM_VENDOR_ID, 0xC6, 200000, 200000, &usbCintiqV5 }, /* Cintiq 12WX */ - { WACOM_VENDOR_ID, 0xCC, 200000, 200000, &usbCintiqV5 }, /* Cintiq 21UX2 */ - { WACOM_VENDOR_ID, 0xF4, 200000, 200000, &usbCintiqV5 }, /* Cintiq 24HD */ - { WACOM_VENDOR_ID, 0xFA, 200000, 200000, &usbCintiqV5 }, /* Cintiq 22HD */ - { WACOM_VENDOR_ID, 0xF8, 200000, 200000, &usbCintiqV5 }, /* Cintiq 24HD touch (EMR digitizer) */ - { WACOM_VENDOR_ID, 0x304,200000, 200000, &usbCintiqV5 }, /* Cintiq 13HD */ - { WACOM_VENDOR_ID, 0x57, 200000, 200000, &usbCintiqV5 }, /* DTK2241 */ - { WACOM_VENDOR_ID, 0x59, 200000, 200000, &usbCintiqV5 }, /* DTH2242 */ - { WACOM_VENDOR_ID, 0x5B, 200000, 200000, &usbCintiqV5 }, /* Cintiq 22HDT */ - - { WACOM_VENDOR_ID, 0x90, 100000, 100000, &usbTabletPC }, /* TabletPC 0x90 */ - { WACOM_VENDOR_ID, 0x93, 100000, 100000, &usbTabletPC }, /* TabletPC 0x93 */ - { WACOM_VENDOR_ID, 0x97, 100000, 100000, &usbTabletPC }, /* TabletPC 0x97 */ - { WACOM_VENDOR_ID, 0x9A, 100000, 100000, &usbTabletPC }, /* TabletPC 0x9A */ - { WACOM_VENDOR_ID, 0x9F, 100000, 100000, &usbTabletPC }, /* CapPlus 0x9F */ - { WACOM_VENDOR_ID, 0xE2, 100000, 100000, &usbTabletPC }, /* TabletPC 0xE2 */ - { WACOM_VENDOR_ID, 0xE3, 100000, 100000, &usbTabletPC }, /* TabletPC 0xE3 */ - { WACOM_VENDOR_ID, 0xE5, 100000, 100000, &usbTabletPC }, /* TabletPC 0xE5 */ - { WACOM_VENDOR_ID, 0xE6, 100000, 100000, &usbTabletPC }, /* TabletPC 0xE6 */ - { WACOM_VENDOR_ID, 0xEC, 100000, 100000, &usbTabletPC }, /* TabletPC 0xEC */ - { WACOM_VENDOR_ID, 0xED, 100000, 100000, &usbTabletPC }, /* TabletPC 0xED */ - { WACOM_VENDOR_ID, 0xEF, 100000, 100000, &usbTabletPC }, /* TabletPC 0xEF */ - { WACOM_VENDOR_ID, 0x100,100000, 100000, &usbTabletPC }, /* TabletPC 0x100 */ - { WACOM_VENDOR_ID, 0x101,100000, 100000, &usbTabletPC }, /* TabletPC 0x101 */ - { WACOM_VENDOR_ID, 0x10D,100000, 100000, &usbTabletPC }, /* TabletPC 0x10D */ - { WACOM_VENDOR_ID, 0x4001,100000, 100000, &usbTabletPC }, /* TabletPC 0x4001 */ + { WACOM_VENDOR_ID, 0x00, 39370, 39370, &usbPenPartner, "PenPartner" }, + { WACOM_VENDOR_ID, 0x10, 80000, 80000, &usbGraphire, "Graphire" }, + { WACOM_VENDOR_ID, 0x11, 80000, 80000, &usbGraphire2, "Graphire2 4x5" }, + { WACOM_VENDOR_ID, 0x12, 80000, 80000, &usbGraphire2, "Graphire2 5x7" }, + { WACOM_VENDOR_ID, 0x13, 80000, 80000, &usbGraphire3, "Graphire3 4x5" }, + { WACOM_VENDOR_ID, 0x14, 80000, 80000, &usbGraphire3, "Graphire3 6x8" }, + { WACOM_VENDOR_ID, 0x15, 80000, 80000, &usbGraphire4, "Graphire4 4x5" }, + { WACOM_VENDOR_ID, 0x16, 80000, 80000, &usbGraphire4, "Graphire4 6x8" }, + { WACOM_VENDOR_ID, 0x17, 100000, 100000, &usbBambooFun, "BambooFun 4x5" }, + { WACOM_VENDOR_ID, 0x18, 100000, 100000, &usbBambooFun, "BambooFun 6x8" }, + { WACOM_VENDOR_ID, 0x19, 80000, 80000, &usbBamboo1, "Bamboo1 Medium" }, + { WACOM_VENDOR_ID, 0x81, 80000, 80000, &usbGraphire4, "Graphire4 6x8 BlueTooth" }, + + { WACOM_VENDOR_ID, 0xD1, 100000, 100000, &usbBamboo, "CTL-460" }, + { WACOM_VENDOR_ID, 0xD4, 100000, 100000, &usbBamboo, "CTH-461" }, + { WACOM_VENDOR_ID, 0xD3, 100000, 100000, &usbBamboo, "CTL-660" }, + { WACOM_VENDOR_ID, 0xD2, 100000, 100000, &usbBamboo, "CTL-461/S" }, + { WACOM_VENDOR_ID, 0xD0, 100000, 100000, &usbBamboo, "Bamboo Touch" }, + { WACOM_VENDOR_ID, 0xD6, 100000, 100000, &usbBamboo, "CTH-460/K" }, + { WACOM_VENDOR_ID, 0xD7, 100000, 100000, &usbBamboo, "CTH-461/S" }, + { WACOM_VENDOR_ID, 0xD8, 100000, 100000, &usbBamboo, "CTH-661/S1" }, + { WACOM_VENDOR_ID, 0xDA, 100000, 100000, &usbBamboo, "CTH-461/L" }, + { WACOM_VENDOR_ID, 0xDB, 100000, 100000, &usbBamboo, "CTH-661/L" }, + + { WACOM_VENDOR_ID, 0x20, 100000, 100000, &usbIntuos, "Intuos 4x5" }, + { WACOM_VENDOR_ID, 0x21, 100000, 100000, &usbIntuos, "Intuos 6x8" }, + { WACOM_VENDOR_ID, 0x22, 100000, 100000, &usbIntuos, "Intuos 9x12" }, + { WACOM_VENDOR_ID, 0x23, 100000, 100000, &usbIntuos, "Intuos 12x12" }, + { WACOM_VENDOR_ID, 0x24, 100000, 100000, &usbIntuos, "Intuos 12x18" }, + + { WACOM_VENDOR_ID, 0x03, 20000, 20000, &usbCintiqPartner, "PTU600" }, + + { WACOM_VENDOR_ID, 0x30, 20000, 20000, &usbCintiq, "PL400" }, + { WACOM_VENDOR_ID, 0x31, 20000, 20000, &usbCintiq, "PL500" }, + { WACOM_VENDOR_ID, 0x32, 20000, 20000, &usbCintiq, "PL600" }, + { WACOM_VENDOR_ID, 0x33, 20000, 20000, &usbCintiq, "PL600SX" }, + { WACOM_VENDOR_ID, 0x34, 20000, 20000, &usbCintiq, "PL550" }, + { WACOM_VENDOR_ID, 0x35, 20000, 20000, &usbCintiq, "PL800" }, + { WACOM_VENDOR_ID, 0x37, 20000, 20000, &usbCintiq, "PL700" }, + { WACOM_VENDOR_ID, 0x38, 20000, 20000, &usbCintiq, "PL510" }, + { WACOM_VENDOR_ID, 0x39, 20000, 20000, &usbCintiq, "PL710" }, + { WACOM_VENDOR_ID, 0x3A, 20000, 20000, &usbCintiq, "DTI520" }, + { WACOM_VENDOR_ID, 0xC0, 20000, 20000, &usbCintiq, "DTF720" }, + { WACOM_VENDOR_ID, 0xC2, 20000, 20000, &usbCintiq, "DTF720a" }, + { WACOM_VENDOR_ID, 0xC4, 20000, 20000, &usbCintiq, "DTF521" }, + { WACOM_VENDOR_ID, 0xC7, 100000, 100000, &usbCintiq, "DTU1931" }, + { WACOM_VENDOR_ID, 0xCE, 100000, 100000, &usbCintiq, "DTU2231" }, + { WACOM_VENDOR_ID, 0xF0, 100000, 100000, &usbCintiq, "DTU1631" }, + + { WACOM_VENDOR_ID, 0x41, 100000, 100000, &usbIntuos2, "Intuos2 4x5" }, + { WACOM_VENDOR_ID, 0x42, 100000, 100000, &usbIntuos2, "Intuos2 6x8" }, + { WACOM_VENDOR_ID, 0x43, 100000, 100000, &usbIntuos2, "Intuos2 9x12" }, + { WACOM_VENDOR_ID, 0x44, 100000, 100000, &usbIntuos2, "Intuos2 12x12" }, + { WACOM_VENDOR_ID, 0x45, 100000, 100000, &usbIntuos2, "Intuos2 12x18" }, + { WACOM_VENDOR_ID, 0x47, 100000, 100000, &usbIntuos2, "Intuos2 6x8 " }, + + { WACOM_VENDOR_ID, 0x60, 50000, 50000, &usbVolito, "Volito" }, + + { WACOM_VENDOR_ID, 0x61, 50000, 50000, &usbVolito2, "PenStation" }, + { WACOM_VENDOR_ID, 0x62, 50000, 50000, &usbVolito2, "Volito2 4x5" }, + { WACOM_VENDOR_ID, 0x63, 50000, 50000, &usbVolito2, "Volito2 2x3" }, + { WACOM_VENDOR_ID, 0x64, 50000, 50000, &usbVolito2, "PenPartner2" }, + + { WACOM_VENDOR_ID, 0x65, 100000, 100000, &usbBamboo, "Bamboo" }, + { WACOM_VENDOR_ID, 0x69, 39842, 39842, &usbBamboo1, "Bamboo1" }, + { WACOM_VENDOR_ID, 0x6A, 100000, 100000, &usbBamboo1, "Bamboo1 4x6" }, + { WACOM_VENDOR_ID, 0x6B, 100000, 100000, &usbBamboo1, "Bamboo1 5x8" }, + + { WACOM_VENDOR_ID, 0xB0, 200000, 200000, &usbIntuos3, "Intuos3 4x5" }, + { WACOM_VENDOR_ID, 0xB1, 200000, 200000, &usbIntuos3, "Intuos3 6x8" }, + { WACOM_VENDOR_ID, 0xB2, 200000, 200000, &usbIntuos3, "Intuos3 9x12" }, + { WACOM_VENDOR_ID, 0xB3, 200000, 200000, &usbIntuos3, "Intuos3 12x12" }, + { WACOM_VENDOR_ID, 0xB4, 200000, 200000, &usbIntuos3, "Intuos3 12x19" }, + { WACOM_VENDOR_ID, 0xB5, 200000, 200000, &usbIntuos3, "Intuos3 6x11" }, + { WACOM_VENDOR_ID, 0xB7, 200000, 200000, &usbIntuos3, "Intuos3 4x6" }, + + { WACOM_VENDOR_ID, 0xB8, 200000, 200000, &usbIntuos4, "Intuos4 4x6" }, + { WACOM_VENDOR_ID, 0xB9, 200000, 200000, &usbIntuos4, "Intuos4 6x9" }, + { WACOM_VENDOR_ID, 0xBA, 200000, 200000, &usbIntuos4, "Intuos4 8x13" }, + { WACOM_VENDOR_ID, 0xBB, 200000, 200000, &usbIntuos4, "Intuos4 12x19" }, + { WACOM_VENDOR_ID, 0xBC, 200000, 200000, &usbIntuos4, "Intuos4 WL USB Endpoint" }, + { WACOM_VENDOR_ID, 0xBD, 200000, 200000, &usbIntuos4, "Intuos4 WL Bluetooth Endpoint"}, + + { WACOM_VENDOR_ID, 0x26, 200000, 200000, &usbIntuos5, "Intuos5 touch S" }, + { WACOM_VENDOR_ID, 0x27, 200000, 200000, &usbIntuos5, "Intuos5 touch M" }, + { WACOM_VENDOR_ID, 0x28, 200000, 200000, &usbIntuos5, "Intuos5 touch L" }, + { WACOM_VENDOR_ID, 0x29, 200000, 200000, &usbIntuos5, "Intuos5 S" }, + { WACOM_VENDOR_ID, 0x2A, 200000, 200000, &usbIntuos5, "Intuos5 M" }, + { WACOM_VENDOR_ID, 0x314,200000, 200000, &usbIntuosPro, "Intuos Pro S" }, + { WACOM_VENDOR_ID, 0x315,200000, 200000, &usbIntuosPro, "Intuos Pro M" }, + { WACOM_VENDOR_ID, 0x317,200000, 200000, &usbIntuosPro, "Intuos Pro L" }, + + { WACOM_VENDOR_ID, 0x3F, 200000, 200000, &usbCintiqV5, "Cintiq 21UX" }, + { WACOM_VENDOR_ID, 0xC5, 200000, 200000, &usbCintiqV5, "Cintiq 20WSX" }, + { WACOM_VENDOR_ID, 0xC6, 200000, 200000, &usbCintiqV5, "Cintiq 12WX" }, + { WACOM_VENDOR_ID, 0xCC, 200000, 200000, &usbCintiqV5, "Cintiq 21UX2" }, + { WACOM_VENDOR_ID, 0xF4, 200000, 200000, &usbCintiqV5, "Cintiq 24HD" }, + { WACOM_VENDOR_ID, 0xFA, 200000, 200000, &usbCintiqV5, "Cintiq 22HD" }, + { WACOM_VENDOR_ID, 0xF8, 200000, 200000, &usbCintiqV5, "Cintiq 24HD touch (EMR digitizer)" }, + { WACOM_VENDOR_ID, 0x304,200000, 200000, &usbCintiqV5, "Cintiq 13HD" }, + { WACOM_VENDOR_ID, 0x57, 200000, 200000, &usbCintiqV5, "DTK2241" }, + { WACOM_VENDOR_ID, 0x59, 200000, 200000, &usbCintiqV5, "DTH2242" }, + { WACOM_VENDOR_ID, 0x5B, 200000, 200000, &usbCintiqV5, "Cintiq 22HDT" }, + + { WACOM_VENDOR_ID, 0x90, 100000, 100000, &usbTabletPC, "TabletPC 0x90" }, + { WACOM_VENDOR_ID, 0x93, 100000, 100000, &usbTabletPC, "TabletPC 0x93" }, + { WACOM_VENDOR_ID, 0x97, 100000, 100000, &usbTabletPC, "TabletPC 0x97" }, + { WACOM_VENDOR_ID, 0x9A, 100000, 100000, &usbTabletPC, "TabletPC 0x9A" }, + { WACOM_VENDOR_ID, 0x9F, 100000, 100000, &usbTabletPC, "CapPlus 0x9F" }, + { WACOM_VENDOR_ID, 0xE2, 100000, 100000, &usbTabletPC, "TabletPC 0xE2" }, + { WACOM_VENDOR_ID, 0xE3, 100000, 100000, &usbTabletPC, "TabletPC 0xE3" }, + { WACOM_VENDOR_ID, 0xE5, 100000, 100000, &usbTabletPC, "TabletPC 0xE5" }, + { WACOM_VENDOR_ID, 0xE6, 100000, 100000, &usbTabletPC, "TabletPC 0xE6" }, + { WACOM_VENDOR_ID, 0xEC, 100000, 100000, &usbTabletPC, "TabletPC 0xEC" }, + { WACOM_VENDOR_ID, 0xED, 100000, 100000, &usbTabletPC, "TabletPC 0xED" }, + { WACOM_VENDOR_ID, 0xEF, 100000, 100000, &usbTabletPC, "TabletPC 0xEF" }, + { WACOM_VENDOR_ID, 0x100,100000, 100000, &usbTabletPC, "TabletPC 0x100" }, + { WACOM_VENDOR_ID, 0x101,100000, 100000, &usbTabletPC, "TabletPC 0x101" }, + { WACOM_VENDOR_ID, 0x10D,100000, 100000, &usbTabletPC, "TabletPC 0x10D" }, + { WACOM_VENDOR_ID, 0x4001,100000, 100000, &usbTabletPC, "TabletPC 0x4001" }, /* IDs from Waltop's driver, available http://www.waltop.com.tw/download.asp?lv=0&id=2. Accessed 8 Apr 2010, driver release date 2009/08/11, fork of linuxwacom 0.8.4. Some more info would be nice for the ID's below... */ - { WALTOP_VENDOR_ID, 0x24, 80000, 80000, &usbGraphire }, - { WALTOP_VENDOR_ID, 0x25, 80000, 80000, &usbGraphire2 }, - { WALTOP_VENDOR_ID, 0x26, 80000, 80000, &usbGraphire2 }, - { WALTOP_VENDOR_ID, 0x27, 80000, 80000, &usbGraphire3 }, - { WALTOP_VENDOR_ID, 0x28, 80000, 80000, &usbGraphire3 }, - { WALTOP_VENDOR_ID, 0x30, 80000, 80000, &usbGraphire4 }, - { WALTOP_VENDOR_ID, 0x31, 80000, 80000, &usbGraphire4 }, - { WALTOP_VENDOR_ID, 0x32, 100000, 100000, &usbBambooFun }, - { WALTOP_VENDOR_ID, 0x33, 100000, 100000, &usbBambooFun }, - { WALTOP_VENDOR_ID, 0x34, 80000, 80000, &usbBamboo1 }, - { WALTOP_VENDOR_ID, 0x35, 80000, 80000, &usbGraphire4 }, - { WALTOP_VENDOR_ID, 0x36, 80000, 80000, &usbGraphire4 }, - { WALTOP_VENDOR_ID, 0x37, 80000, 80000, &usbGraphire4 }, - { WALTOP_VENDOR_ID, 0x38, 100000, 100000, &usbBambooFun }, - { WALTOP_VENDOR_ID, 0x39, 100000, 100000, &usbBambooFun }, - { WALTOP_VENDOR_ID, 0x51, 100000, 100000, &usbBamboo }, - { WALTOP_VENDOR_ID, 0x52, 100000, 100000, &usbBamboo }, - - { WALTOP_VENDOR_ID, 0x53, 100000, 100000, &usbBamboo }, - { WALTOP_VENDOR_ID, 0x54, 100000, 100000, &usbBamboo }, - { WALTOP_VENDOR_ID, 0x55, 100000, 100000, &usbBamboo }, - { WALTOP_VENDOR_ID, 0x56, 100000, 100000, &usbBamboo }, - { WALTOP_VENDOR_ID, 0x57, 100000, 100000, &usbBamboo }, - { WALTOP_VENDOR_ID, 0x58, 100000, 100000, &usbBamboo }, - { WALTOP_VENDOR_ID, 0x500, 100000, 100000, &usbBamboo }, - { WALTOP_VENDOR_ID, 0x501, 100000, 100000, &usbBamboo }, - { WALTOP_VENDOR_ID, 0x502, 200000, 200000, &usbIntuos4 }, - { WALTOP_VENDOR_ID, 0x503, 200000, 200000, &usbIntuos4 }, + { WALTOP_VENDOR_ID, 0x24, 80000, 80000, &usbGraphire, NULL }, + { WALTOP_VENDOR_ID, 0x25, 80000, 80000, &usbGraphire2, NULL }, + { WALTOP_VENDOR_ID, 0x26, 80000, 80000, &usbGraphire2, NULL }, + { WALTOP_VENDOR_ID, 0x27, 80000, 80000, &usbGraphire3, NULL }, + { WALTOP_VENDOR_ID, 0x28, 80000, 80000, &usbGraphire3, NULL }, + { WALTOP_VENDOR_ID, 0x30, 80000, 80000, &usbGraphire4, NULL }, + { WALTOP_VENDOR_ID, 0x31, 80000, 80000, &usbGraphire4, NULL }, + { WALTOP_VENDOR_ID, 0x32, 100000, 100000, &usbBambooFun, NULL }, + { WALTOP_VENDOR_ID, 0x33, 100000, 100000, &usbBambooFun, NULL }, + { WALTOP_VENDOR_ID, 0x34, 80000, 80000, &usbBamboo1, NULL }, + { WALTOP_VENDOR_ID, 0x35, 80000, 80000, &usbGraphire4, NULL }, + { WALTOP_VENDOR_ID, 0x36, 80000, 80000, &usbGraphire4, NULL }, + { WALTOP_VENDOR_ID, 0x37, 80000, 80000, &usbGraphire4, NULL }, + { WALTOP_VENDOR_ID, 0x38, 100000, 100000, &usbBambooFun, NULL }, + { WALTOP_VENDOR_ID, 0x39, 100000, 100000, &usbBambooFun, NULL }, + { WALTOP_VENDOR_ID, 0x51, 100000, 100000, &usbBamboo, NULL }, + { WALTOP_VENDOR_ID, 0x52, 100000, 100000, &usbBamboo, NULL }, + + { WALTOP_VENDOR_ID, 0x53, 100000, 100000, &usbBamboo, NULL }, + { WALTOP_VENDOR_ID, 0x54, 100000, 100000, &usbBamboo, NULL }, + { WALTOP_VENDOR_ID, 0x55, 100000, 100000, &usbBamboo, NULL }, + { WALTOP_VENDOR_ID, 0x56, 100000, 100000, &usbBamboo, NULL }, + { WALTOP_VENDOR_ID, 0x57, 100000, 100000, &usbBamboo, NULL }, + { WALTOP_VENDOR_ID, 0x58, 100000, 100000, &usbBamboo, NULL }, + { WALTOP_VENDOR_ID, 0x500, 100000, 100000, &usbBamboo, NULL }, + { WALTOP_VENDOR_ID, 0x501, 100000, 100000, &usbBamboo, NULL }, + { WALTOP_VENDOR_ID, 0x502, 200000, 200000, &usbIntuos4, NULL }, + { WALTOP_VENDOR_ID, 0x503, 200000, 200000, &usbIntuos4, NULL }, /* N-Trig devices */ - { NTRIG_VENDOR_ID, 0x01, 44173, 36772, &usbTabletPC }, + { NTRIG_VENDOR_ID, 0x01, 44173, 36772, &usbTabletPC, NULL }, /* Add in Lenovo W700 Palmrest digitizer */ - { LENOVO_VENDOR_ID, 0x6004, 100000, 100000, &usbTabletPC } /* Pen-only */ + { LENOVO_VENDOR_ID, 0x6004, 100000, 100000, &usbTabletPC, NULL } /* Pen-only */ }; +void usbListModels(void) +{ + int i; + char *usbnames[ARRAY_SIZE(WacomModelDesc)] = {0}; + SymTabRec models[ARRAY_SIZE(WacomModelDesc) + 1]; + + for (i = 0; i < ARRAY_SIZE(WacomModelDesc); i++) + { + struct WacomModelDesc *m = &WacomModelDesc[i]; + + models[i].token = i; + if (m->name) + models[i].name = m->name; + else { + /* SymTabRec has a const char *name so we can't free + without compiler warnings. keep allocated stuff + in separate array. + */ + usbnames[i] = malloc(64); + if (!usbnames[i]) { + /* if malloc fails, xf86PrintChipsets() terminates + here because models->name is NULL. then again, + malloc failed, so the rest is academic. */ + models[i].name = NULL; + break; + } + sprintf(usbnames[i], "usb:%04x:%04x", m->vendor_id, m->model_id); + models[i].name = usbnames[i]; + } + } + + models[ARRAY_SIZE(models) - 1].name = NULL; + + xf86PrintChipsets("wacom", + "Driver for Wacom graphics tablets", + models); + + for (i = 0; i < ARRAY_SIZE(usbnames); i++) + free(usbnames[i]); +} + + static Bool usbWcmInit(InputInfoPtr pInfo, char* id, float *version) { int i; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.22.1/src/wcmValidateDevice.c new/xf86-input-wacom-0.23.0/src/wcmValidateDevice.c --- old/xf86-input-wacom-0.22.1/src/wcmValidateDevice.c 2013-07-15 19:01:59.000000000 +0200 +++ new/xf86-input-wacom-0.23.0/src/wcmValidateDevice.c 2013-09-20 01:12:33.000000000 +0200 @@ -202,6 +202,9 @@ TabletSetFeature(priv->common, WCM_DUALRING | WCM_LCD); /* fall through */ + case 0x314: /* Intuos Pro S */ + case 0x315: /* Intuos Pro M */ + case 0x317: /* Intuos Pro L */ case 0x26: /* I5 */ case 0x27: /* I5 */ case 0x28: /* I5 */ @@ -345,8 +348,8 @@ InputOption *new; new = calloc(1, sizeof(InputOption)); - new->key = key; - new->value = value; + new->key = strdup(key); + new->value = strdup(value); new->next = list; return new; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.22.1/src/xf86Wacom.h new/xf86-input-wacom-0.23.0/src/xf86Wacom.h --- old/xf86-input-wacom-0.22.1/src/xf86Wacom.h 2013-07-15 19:01:59.000000000 +0200 +++ new/xf86-input-wacom-0.23.0/src/xf86Wacom.h 2013-09-20 02:05:07.000000000 +0200 @@ -182,6 +182,7 @@ extern WacomCommonPtr wcmRefCommon(WacomCommonPtr common); extern void wcmFreeCommon(WacomCommonPtr *common); extern WacomCommonPtr wcmNewCommon(void); +extern void usbListModels(void); enum WacomSuppressMode { SUPPRESS_NONE = 8, /* Process event normally */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.22.1/tools/xsetwacom.c new/xf86-input-wacom-0.23.0/tools/xsetwacom.c --- old/xf86-input-wacom-0.22.1/tools/xsetwacom.c 2013-07-15 19:01:59.000000000 +0200 +++ new/xf86-input-wacom-0.23.0/tools/xsetwacom.c 2013-09-20 01:13:08.000000000 +0200 @@ -921,16 +921,16 @@ return (m->name != NULL); } -static int special_map_keystrokes(Display *dpy, int argc, char **argv, unsigned long *ndata, unsigned long* data); -static int special_map_button(Display *dpy, int argc, char **argv, unsigned long *ndata, unsigned long* data); -static int special_map_core(Display *dpy, int argc, char **argv, unsigned long *ndata, unsigned long *data); -static int special_map_modetoggle(Display *dpy, int argc, char **argv, unsigned long *ndata, unsigned long *data); -static int special_map_displaytoggle(Display *dpy, int argc, char **argv, unsigned long *ndata, unsigned long *data); +static int special_map_keystrokes(Display *dpy, int argc, char **argv, unsigned long *ndata, unsigned long* data, const size_t size); +static int special_map_button(Display *dpy, int argc, char **argv, unsigned long *ndata, unsigned long* data, const size_t size); +static int special_map_core(Display *dpy, int argc, char **argv, unsigned long *ndata, unsigned long *data, const size_t size); +static int special_map_modetoggle(Display *dpy, int argc, char **argv, unsigned long *ndata, unsigned long *data, const size_t size); +static int special_map_displaytoggle(Display *dpy, int argc, char **argv, unsigned long *ndata, unsigned long *data, const size_t size); /* Valid keywords for the --set ButtonX options */ struct keywords { const char *keyword; - int (*func)(Display*, int, char **, unsigned long*, unsigned long *); + int (*func)(Display*, int, char **, unsigned long*, unsigned long *, const size_t size); } keywords[] = { {"key", special_map_keystrokes}, {"button", special_map_button}, @@ -942,7 +942,7 @@ /* the "core" keyword isn't supported anymore, we just have this here to tell people that. */ -static int special_map_core(Display *dpy, int argc, char **argv, unsigned long *ndata, unsigned long *data) +static int special_map_core(Display *dpy, int argc, char **argv, unsigned long *ndata, unsigned long *data, const size_t size) { static int once_only = 1; if (once_only) @@ -954,8 +954,12 @@ return 0; } -static int special_map_modetoggle(Display *dpy, int argc, char **argv, unsigned long *ndata, unsigned long *data) +static int special_map_modetoggle(Display *dpy, int argc, char **argv, unsigned long *ndata, unsigned long *data, const size_t size) { + if (*ndata + 1 > size) { + fprintf(stderr, "Insufficient space to store all commands.\n"); + return 0; + } data[*ndata] = AC_MODETOGGLE; *ndata += 1; @@ -963,8 +967,12 @@ return 0; } -static int special_map_displaytoggle(Display *dpy, int argc, char **argv, unsigned long *ndata, unsigned long *data) +static int special_map_displaytoggle(Display *dpy, int argc, char **argv, unsigned long *ndata, unsigned long *data, const size_t size) { + if (*ndata + 1 > size) { + fprintf(stderr, "Insufficient space to store all commands.\n"); + return 0; + } data[*ndata] = AC_DISPLAYTOGGLE; *ndata += 1; @@ -985,7 +993,7 @@ return 0; } -static int special_map_button(Display *dpy, int argc, char **argv, unsigned long *ndata, unsigned long *data) +static int special_map_button(Display *dpy, int argc, char **argv, unsigned long *ndata, unsigned long *data, const size_t size) { int nitems = 0; int i; @@ -1013,13 +1021,22 @@ need_press = need_release = 1; if (sscanf(btn, "%d", &button) != 1) - return nitems; + break; TRACE("Button map %d [%s,%s]\n", abs(button), need_press ? "press" : "", need_release ? "release" : ""); + if (need_press && need_release && *ndata + nitems + 2 > size) { + fprintf(stderr, "Insufficient space to store all commands.\n"); + break; + } + else if ((need_press || need_release) && *ndata + nitems + 1 > size) { + fprintf(stderr, "Insufficient space to store all commands.\n"); + break; + } + if (need_press) data[*ndata + nitems++] = AC_BUTTON | AC_KEYBTNPRESS | abs(button); if (need_release) @@ -1027,7 +1044,7 @@ } *ndata += nitems; - return nitems; + return i; } /* Return the first keycode to have the required keysym in the current group. @@ -1064,7 +1081,7 @@ Map gibberish like "ctrl alt f2" into the matching AC_KEY values. Returns 1 on success or 0 otherwise. */ -static int special_map_keystrokes(Display *dpy, int argc, char **argv, unsigned long *ndata, unsigned long* data) +static int special_map_keystrokes(Display *dpy, int argc, char **argv, unsigned long *ndata, unsigned long* data, const size_t size) { int i; int nitems = 0; @@ -1123,6 +1140,15 @@ kc = keysym_to_keycode(dpy, ks); + if (need_press && need_release && *ndata + nitems + 2 > size) { + fprintf(stderr, "Insufficient space to store all commands.\n"); + break; + } + else if ((need_press || need_release) && *ndata + nitems + 1 > size) { + fprintf(stderr, "Insufficient space to store all commands.\n"); + break; + } + if (need_press) data[*ndata + nitems++] = AC_KEY | AC_KEYBTNPRESS | kc; if (need_release) @@ -1193,7 +1219,7 @@ * @param data Parsed action data * @return 'true' if the whole string was parsed sucessfully, else 'false' */ -static Bool parse_actions(Display *dpy, int argc, char **argv, unsigned long* data, unsigned long *nitems) +static Bool parse_actions(Display *dpy, int argc, char **argv, unsigned long* data, unsigned long *nitems, const size_t size) { int i = 0; int nwords = 0; @@ -1219,19 +1245,19 @@ nwords = 2; } - for (i = 0; i < nwords; i++) + for (i = 0; i < nwords && *nitems < size; i++) { int j = 0; int keyword_found = 0; - while (keywords[j].keyword && i < nwords) + while (keywords[j].keyword && i < nwords && *nitems < size) { int parsed = 0; if (strcasecmp(words[i], keywords[j].keyword) == 0) { parsed = keywords[j].func(dpy, nwords - i - 1, &words[i + 1], - nitems, data); + nitems, data, size); i += parsed; keyword_found = 1; } @@ -1281,7 +1307,7 @@ unsigned long nitems = 0; data = calloc(256, sizeof(long)); - if (!parse_actions(dpy, argc, argv, data, &nitems)) + if (!parse_actions(dpy, argc, argv, data, &nitems, 256)) goto out; /* obtain the button actions Atom */ -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
