Use of 'sizeof(id)' in usbWcmInit is incorrect since we don't really care
about the size of the pointer, but rather of the array that it points to.
Update function definitions to pass around a length parameter as needed.
Signed-off-by: Jason Gerecke <***@wacom.com>
---
src/xdrv/wcmISDV4.c | 8 ++++----
src/xdrv/wcmMapping.c | 4 ++--
src/xdrv/wcmSerial.c | 36 ++++++++++++++++++------------------
src/xdrv/wcmUSB.c | 14 +++++++-------
src/xdrv/xf86Wacom.c | 4 ++--
src/xdrv/xf86Wacom.h | 2 +-
src/xdrv/xf86WacomDefs.h | 4 ++--
7 files changed, 36 insertions(+), 36 deletions(-)
diff --git a/src/xdrv/wcmISDV4.c b/src/xdrv/wcmISDV4.c
index 5003f57..ca78f8e 100755
--- a/src/xdrv/wcmISDV4.c
+++ b/src/xdrv/wcmISDV4.c
@@ -22,8 +22,8 @@
#include "wcmFilter.h"
static Bool isdv4Detect(LocalDevicePtr);
-static Bool isdv4Init(LocalDevicePtr, char* id, float *version);
-static void isdv4InitISDV4(WacomCommonPtr common, const char* id, float version);
+static Bool isdv4Init(LocalDevicePtr, char* id, size_t id_len, float *version);
+static void isdv4InitISDV4(WacomCommonPtr common, const char* id, size_t id_len, float version);
static int isdv4GetRanges(LocalDevicePtr);
static int isdv4StartTablet(LocalDevicePtr);
static int isdv4Parse(LocalDevicePtr, const unsigned char* data);
@@ -64,7 +64,7 @@ static Bool isdv4Detect(LocalDevicePtr local)
* isdv4Init --
****************************************************************************/
-static Bool isdv4Init(LocalDevicePtr local, char* id, float *version)
+static Bool isdv4Init(LocalDevicePtr local, char* id, size_t id_len, float *version)
{
WacomDevicePtr priv = (WacomDevicePtr)local->private;
WacomCommonPtr common = priv->common;
@@ -169,7 +169,7 @@ static int isdv4Query(LocalDevicePtr local, const char* query, char* data)
* isdv4InitISDV4 -- Setup the device
****************************************************************************/
-static void isdv4InitISDV4(WacomCommonPtr common, const char* id, float version)
+static void isdv4InitISDV4(WacomCommonPtr common, const char* id, size_t id_len, float version)
{
/* set parameters */
common->wcmProtocolLevel = 4;
diff --git a/src/xdrv/wcmMapping.c b/src/xdrv/wcmMapping.c
index bbca6c2..bcfd93f 100755
--- a/src/xdrv/wcmMapping.c
+++ b/src/xdrv/wcmMapping.c
@@ -464,14 +464,14 @@ void xf86WcmSetScreen(LocalDevicePtr local, int v0, int v1)
* xf86WcmInitTablet -- common initialization for all tablets
****************************************************************************/
-int xf86WcmInitTablet(LocalDevicePtr local, const char* id, float version)
+int xf86WcmInitTablet(LocalDevicePtr local, const char* id, size_t id_len, float version)
{
WacomDevicePtr priv = (WacomDevicePtr)local->private;
WacomCommonPtr common = priv->common;
WacomModelPtr model = common->wcmModel;
/* Initialize the tablet */
- model->Initialize(common,id,version);
+ model->Initialize(common,id,id_len,version);
/* Get tablet resolution */
if (model->GetResolution)
diff --git a/src/xdrv/wcmSerial.c b/src/xdrv/wcmSerial.c
index db1f108..4b41552 100755
--- a/src/xdrv/wcmSerial.c
+++ b/src/xdrv/wcmSerial.c
@@ -23,15 +23,15 @@
/* Serial Support */
static Bool serialDetect(LocalDevicePtr pDev);
-static Bool serialInit(LocalDevicePtr pDev, char* id, float *version);
-
-static int serialInitTablet(LocalDevicePtr pDev, char* id, float *version);
-static void serialInitIntuos(WacomCommonPtr common, const char* id, float version);
-static void serialInitIntuos2(WacomCommonPtr common, const char* id, float version);
-static void serialInitCintiq(WacomCommonPtr common, const char* id, float version);
-static void serialInitPenPartner(WacomCommonPtr common, const char* id, float version);
-static void serialInitGraphire(WacomCommonPtr common, const char* id, float version);
-static void serialInitProtocol4(WacomCommonPtr common, const char* id, float version);
+static Bool serialInit(LocalDevicePtr pDev, char* id, size_t id_len, float *version);
+
+static int serialInitTablet(LocalDevicePtr pDev, char* id, size_t id_len, float *version);
+static void serialInitIntuos(WacomCommonPtr common, const char* id, size_t id_len, float version);
+static void serialInitIntuos2(WacomCommonPtr common, const char* id, size_t id_len, float version);
+static void serialInitCintiq(WacomCommonPtr common, const char* id, size_t id_len, float version);
+static void serialInitPenPartner(WacomCommonPtr common, const char* id, size_t id_len, float version);
+static void serialInitGraphire(WacomCommonPtr common, const char* id, size_t id_len, float version);
+static void serialInitProtocol4(WacomCommonPtr common, const char* id, size_t id_len, float version);
static void serialGetResolution(LocalDevicePtr local);
static int serialGetRanges(LocalDevicePtr local);
static int serialResetIntuos(LocalDevicePtr local);
@@ -397,7 +397,7 @@ static Bool serialDetect(LocalDevicePtr pDev)
return 1;
}
-static Bool serialInit(LocalDevicePtr local, char* id, float *version)
+static Bool serialInit(LocalDevicePtr local, char* id, size_t id_len, float *version)
{
int err;
WacomDevicePtr priv = (WacomDevicePtr)local->private;
@@ -493,7 +493,7 @@ static Bool serialInit(LocalDevicePtr local, char* id, float *version)
xf86WcmFlushTablet(local->fd);
- return serialInitTablet(local, id, version);
+ return serialInitTablet(local, id, id_len, version);
}
/*****************************************************************************
@@ -501,7 +501,7 @@ static Bool serialInit(LocalDevicePtr local, char* id, float *version)
* Initialize the tablet
****************************************************************************/
-static int serialInitTablet(LocalDevicePtr local, char* id, float *version)
+static int serialInitTablet(LocalDevicePtr local, char* id, size_t id_len, float *version)
{
int loop, idx;
char getID[BUFFER_SIZE];
@@ -857,7 +857,7 @@ static int serialParseProtocol5(LocalDevicePtr local, const unsigned char* data)
* Model-specific functions
****************************************************************************/
-static void serialInitIntuos(WacomCommonPtr common, const char* id, float version)
+static void serialInitIntuos(WacomCommonPtr common, const char* id, size_t id_len, float version)
{
common->wcmProtocolLevel = 5;
common->wcmVersion = version;
@@ -869,7 +869,7 @@ static void serialInitIntuos(WacomCommonPtr common, const char* id, float versio
common->wcmFlags |= TILT_ENABLED_FLAG;
}
-static void serialInitIntuos2(WacomCommonPtr common, const char* id, float version)
+static void serialInitIntuos2(WacomCommonPtr common, const char* id, size_t id_len, float version)
{
common->wcmProtocolLevel = 5;
common->wcmVersion = version;
@@ -881,7 +881,7 @@ static void serialInitIntuos2(WacomCommonPtr common, const char* id, float versi
common->wcmFlags |= TILT_ENABLED_FLAG;
}
-static void serialInitCintiq(WacomCommonPtr common, const char* id, float version)
+static void serialInitCintiq(WacomCommonPtr common, const char* id, size_t id_len, float version)
{
common->wcmProtocolLevel = 4;
common->wcmPktLength = 7;
@@ -955,7 +955,7 @@ static void serialInitCintiq(WacomCommonPtr common, const char* id, float versio
common->wcmFlags &= ~TILT_ENABLED_FLAG;
}
-static void serialInitPenPartner(WacomCommonPtr common, const char* id, float version)
+static void serialInitPenPartner(WacomCommonPtr common, const char* id, size_t id_len, float version)
{
common->wcmProtocolLevel = 4;
common->wcmPktLength = 7;
@@ -969,7 +969,7 @@ static void serialInitPenPartner(WacomCommonPtr common, const char* id, float ve
common->wcmFlags &= ~TILT_ENABLED_FLAG;
}
-static void serialInitGraphire(WacomCommonPtr common, const char* id, float version)
+static void serialInitGraphire(WacomCommonPtr common, const char* id, size_t id_len, float version)
{
common->wcmProtocolLevel = 4;
common->wcmPktLength = 7;
@@ -986,7 +986,7 @@ static void serialInitGraphire(WacomCommonPtr common, const char* id, float vers
common->wcmFlags &= ~TILT_ENABLED_FLAG;
}
-static void serialInitProtocol4(WacomCommonPtr common, const char* id, float version)
+static void serialInitProtocol4(WacomCommonPtr common, const char* id, size_t id_len, float version)
{
common->wcmProtocolLevel = 4;
common->wcmPktLength = 7;
diff --git a/src/xdrv/wcmUSB.c b/src/xdrv/wcmUSB.c
index ce82539..cb2ca88 100755
--- a/src/xdrv/wcmUSB.c
+++ b/src/xdrv/wcmUSB.c
@@ -40,12 +40,12 @@ static int lastToolSerial = 0;
extern int wcmDeviceTypeKeys(LocalDevicePtr local, unsigned long* keys, size_t nkeys, int* tablet_id);
extern void wcmIsDisplay(WacomCommonPtr common);
static Bool usbDetect(LocalDevicePtr);
-Bool usbWcmInit(LocalDevicePtr pDev, char* id, float *version);
+Bool usbWcmInit(LocalDevicePtr pDev, char* id, size_t id_len, float *version);
static void usbInitProtocol5(WacomCommonPtr common, const char* id,
- float version);
+ size_t id_len, float version);
static void usbInitProtocol4(WacomCommonPtr common, const char* id,
- float version);
+ size_t id_len, float version);
int usbWcmGetRanges(LocalDevicePtr local);
static int usbParse(LocalDevicePtr local, const unsigned char* data);
static int usbDetectConfig(LocalDevicePtr local);
@@ -580,7 +580,7 @@ static void usbRetrieveKeys(WacomCommonPtr common)
common->nbuttons = 5;
}
-Bool usbWcmInit(LocalDevicePtr local, char* id, float *version)
+Bool usbWcmInit(LocalDevicePtr local, char* id, size_t id_len, float *version)
{
int i;
WacomDevicePtr priv = (WacomDevicePtr)local->private;
@@ -590,7 +590,7 @@ Bool usbWcmInit(LocalDevicePtr local, char* id, float *version)
*version = 0.0;
/* fetch model name */
- ioctl(local->fd, EVIOCGNAME(sizeof(id)), id);
+ ioctl(local->fd, EVIOCGNAME(id_len), id);
#ifndef WCM_XORG_XSERVER_1_4
@@ -640,7 +640,7 @@ Bool usbWcmInit(LocalDevicePtr local, char* id, float *version)
}
static void usbInitProtocol5(WacomCommonPtr common, const char* id,
- float version)
+ size_t id_len, float version)
{
common->wcmProtocolLevel = 5;
common->wcmPktLength = sizeof(struct input_event);
@@ -656,7 +656,7 @@ static void usbInitProtocol5(WacomCommonPtr common, const char* id,
}
static void usbInitProtocol4(WacomCommonPtr common, const char* id,
- float version)
+ size_t id_len, float version)
{
common->wcmProtocolLevel = 4;
common->wcmPktLength = sizeof(struct input_event);
diff --git a/src/xdrv/xf86Wacom.c b/src/xdrv/xf86Wacom.c
index c18fd64..c214fc9 100755
--- a/src/xdrv/xf86Wacom.c
+++ b/src/xdrv/xf86Wacom.c
@@ -687,8 +687,8 @@ Bool xf86WcmOpen(LocalDevicePtr local)
}
/* Initialize the tablet */
- if(common->wcmDevCls->Init(local, id, &version) != Success ||
- xf86WcmInitTablet(local, id, version) != Success)
+ if(common->wcmDevCls->Init(local, id, sizeof(id), &version) != Success ||
+ xf86WcmInitTablet(local, id, sizeof(id), version) != Success)
{
xf86CloseSerial(local->fd);
local->fd = -1;
diff --git a/src/xdrv/xf86Wacom.h b/src/xdrv/xf86Wacom.h
index 3e5e9cd..e3cd49d 100755
--- a/src/xdrv/xf86Wacom.h
+++ b/src/xdrv/xf86Wacom.h
@@ -247,7 +247,7 @@ int xf86WcmWriteWait(int fd, const char* request);
int xf86WcmWaitForTablet(int fd, char * data, int size);
/* common tablet initialization regime */
-int xf86WcmInitTablet(LocalDevicePtr local, const char* id, float version);
+int xf86WcmInitTablet(LocalDevicePtr local, const char* id, size_t id_len, float version);
/* standard packet handler */
void xf86WcmReadPacket(LocalDevicePtr local);
diff --git a/src/xdrv/xf86WacomDefs.h b/src/xdrv/xf86WacomDefs.h
index 45b88ae..2b6c291 100755
--- a/src/xdrv/xf86WacomDefs.h
+++ b/src/xdrv/xf86WacomDefs.h
@@ -89,7 +89,7 @@ struct _WacomModel
{
const char* name;
- void (*Initialize)(WacomCommonPtr common, const char* id, float version);
+ void (*Initialize)(WacomCommonPtr common, const char* id, size_t id_len, float version);
void (*GetResolution)(LocalDevicePtr local);
int (*GetRanges)(LocalDevicePtr local);
int (*Reset)(LocalDevicePtr local);
@@ -338,7 +338,7 @@ struct _WacomChannel
struct _WacomDeviceClass
{
Bool (*Detect)(LocalDevicePtr local); /* detect device */
- Bool (*Init)(LocalDevicePtr local, char* id, float *version); /* initialize device */
+ Bool (*Init)(LocalDevicePtr local, char* id, size_t id_len, float *version); /* initialize device */
void (*Read)(LocalDevicePtr local); /* reads device */
};
--
2.12.0