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:
parent
d4327d42b0
commit
402bb0ee81
|
@ -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. */
|
||||
|
|
Loading…
Reference in New Issue