diff options
-rw-r--r-- | drivers/hid/wacom_sys.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c index eea18a6..bdf31c9 100644 --- a/drivers/hid/wacom_sys.c +++ b/drivers/hid/wacom_sys.c @@ -1417,6 +1417,7 @@ static void wacom_update_name(struct wacom *wacom) { struct wacom_wac *wacom_wac = &wacom->wacom_wac; struct wacom_features *features = &wacom_wac->features; + char name[WACOM_NAME_MAX]; /* Generic devices name unspecified */ if ((features->type == HID_GENERIC) && !strcmp("Wacom HID", features->name)) { @@ -1424,41 +1425,43 @@ static void wacom_update_name(struct wacom *wacom) strstr(wacom->hdev->name, "wacom") || strstr(wacom->hdev->name, "WACOM")) { /* name is in HID descriptor, use it */ - strlcpy(wacom_wac->name, wacom->hdev->name, - sizeof(wacom_wac->name)); + strlcpy(name, wacom->hdev->name, sizeof(name)); /* strip out excess whitespaces */ while (1) { - char *gap = strstr(wacom_wac->name, " "); + char *gap = strstr(name, " "); if (gap == NULL) break; /* shift everything including the terminator */ memmove(gap, gap+1, strlen(gap)); } /* get rid of trailing whitespace */ - if (wacom_wac->name[strlen(wacom_wac->name)-1] == ' ') - wacom_wac->name[strlen(wacom_wac->name)-1] = '\0'; + if (name[strlen(name)-1] == ' ') + name[strlen(name)-1] = '\0'; } else { /* no meaningful name retrieved. use product ID */ - snprintf(wacom_wac->name, sizeof(wacom_wac->name), + snprintf(name, sizeof(name), "%s %X", features->name, wacom->hdev->product); } } else { - strlcpy(wacom_wac->name, features->name, sizeof(wacom_wac->name)); + strlcpy(name, features->name, sizeof(name)); } /* Append the device type to the name */ snprintf(wacom_wac->pad_name, sizeof(wacom_wac->pad_name), - "%s Pad", wacom_wac->name); + "%s Pad", name); if (features->device_type == BTN_TOOL_PEN) { - strlcat(wacom_wac->name, " Pen", WACOM_NAME_MAX); + snprintf(wacom_wac->name, sizeof(wacom_wac->name), + "%s Pen", name); } else if (features->device_type == BTN_TOOL_FINGER) { if (features->touch_max) - strlcat(wacom_wac->name, " Finger", WACOM_NAME_MAX); + snprintf(wacom_wac->name, sizeof(wacom_wac->name), + "%s Finger", name); else - strlcat(wacom_wac->name, " Pad", WACOM_NAME_MAX); + snprintf(wacom_wac->name, sizeof(wacom_wac->name), + "%s Pad", name); } } |