USB HID: Always use a format string.

Ensure that the second argument to wmem_strdup_printf is always a format
string.
Fixes #18384.
This commit is contained in:
Gerald Combs 2022-09-27 13:53:25 -07:00
parent d4327d42b0
commit 402bb0ee81
1 changed files with 11 additions and 7 deletions

View File

@ -3966,6 +3966,7 @@ static gchar*
get_usage_page_item_string(wmem_allocator_t *pool, guint32 usage_page, guint32 id)
{
const char *str = NULL;
const char *fmt_str = NULL;
switch (usage_page)
{
@ -3996,7 +3997,7 @@ get_usage_page_item_string(wmem_allocator_t *pool, guint32 usage_page, guint32 i
case BUTTON_PAGE:
str = try_val_to_str(id, usb_hid_button_usage_page_vals);
if (!str)
str = "Button %u";
fmt_str = "Button %u";
break;
case ORDINAL_PAGE:
str = try_val_to_str(id, usb_hid_ordinal_usage_page_vals);
@ -4007,7 +4008,7 @@ get_usage_page_item_string(wmem_allocator_t *pool, guint32 usage_page, guint32 i
case CONSUMER_PAGE:
str = try_val_to_str(id, usb_hid_consumer_usage_page_vals);
if (!str)
str = "Instance %u";
fmt_str = "Instance %u";
break;
case DIGITIZER_PAGE:
str = try_val_to_str(id, usb_hid_digitizers_usage_page_vals);
@ -4021,7 +4022,7 @@ get_usage_page_item_string(wmem_allocator_t *pool, guint32 usage_page, guint32 i
str = try_val_to_str(id, usb_hid_physical_input_device_usage_page_vals);
break;
case UNICODE_PAGE:
str = "Character U+%04X";
fmt_str = "Character U+%04X";
break;
case EYE_AND_HEAD_TRACKER_PAGE:
str = try_val_to_str(id, usb_hid_eye_and_head_tracker_usage_page_vals);
@ -4047,7 +4048,7 @@ get_usage_page_item_string(wmem_allocator_t *pool, guint32 usage_page, guint32 i
str = try_val_to_str(id, usb_hid_monitor_usage_page_vals);
break;
case USB_ENUMERATED_VALUES_PAGE:
str = "ENUM_%u";
fmt_str = "ENUM_%u";
break;
case VESA_VIRTUAL_CONTROLS_PAGE:
str = try_val_to_str(id, usb_hid_vesa_virtual_control_usage_page_vals);
@ -4082,10 +4083,13 @@ get_usage_page_item_string(wmem_allocator_t *pool, guint32 usage_page, guint32 i
break;
}
if (!str)
if (fmt_str) {
return wmem_strdup_printf(pool, fmt_str, id);
}
if (!str) {
str = "Reserved";
return wmem_strdup_printf(pool, str, id);
}
return wmem_strdup_printf(pool, "%s", str);
}
/* Dissector for the data in a HID main report. */