udev: prefix vendor.id and product.id with 0x

They are hex strings so prefix them with 0x to make sure they get
handled like that in properties.

Fixes #2527
This commit is contained in:
Wim Taymans 2022-07-11 11:54:35 +02:00
parent cbbc4baa3f
commit 03f918bf15
2 changed files with 8 additions and 12 deletions

View file

@ -478,11 +478,10 @@ static int emit_object_info(struct impl *this, struct device *device)
items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_SUBSYSTEM, str); items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_SUBSYSTEM, str);
} }
if ((str = udev_device_get_property_value(dev, "ID_VENDOR_ID")) && *str) { if ((str = udev_device_get_property_value(dev, "ID_VENDOR_ID")) && *str) {
char *dec = alloca(6); /* 65535 is max */
int32_t val; int32_t val;
if (spa_atoi32(str, &val, 16)) { if (spa_atoi32(str, &val, 16)) {
snprintf(dec, 6, "%d", val); char *dec = alloca(12); /* 0xffffffff is max */
snprintf(dec, 12, "0x%04x", val);
items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_VENDOR_ID, dec); items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_VENDOR_ID, dec);
} }
} }
@ -501,11 +500,10 @@ static int emit_object_info(struct impl *this, struct device *device)
items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_VENDOR_NAME, str); items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_VENDOR_NAME, str);
} }
if ((str = udev_device_get_property_value(dev, "ID_MODEL_ID")) && *str) { if ((str = udev_device_get_property_value(dev, "ID_MODEL_ID")) && *str) {
char *dec = alloca(6); /* 65535 is max */
int32_t val; int32_t val;
if (spa_atoi32(str, &val, 16)) { if (spa_atoi32(str, &val, 16)) {
snprintf(dec, 6, "%d", val); char *dec = alloca(12); /* 0xffffffff is max */
snprintf(dec, 12, "0x%04x", val);
items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_PRODUCT_ID, dec); items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_PRODUCT_ID, dec);
} }
} }

View file

@ -279,11 +279,10 @@ static int emit_object_info(struct impl *this, struct device *device)
items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_SUBSYSTEM, str); items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_SUBSYSTEM, str);
} }
if ((str = udev_device_get_property_value(dev, "ID_VENDOR_ID")) && *str) { if ((str = udev_device_get_property_value(dev, "ID_VENDOR_ID")) && *str) {
char *dec = alloca(6); /* 65535 is max */
int32_t val; int32_t val;
if (spa_atoi32(str, &val, 16)) { if (spa_atoi32(str, &val, 16)) {
snprintf(dec, 6, "%d", val); char *dec = alloca(12); /* 0xffff is max */
snprintf(dec, 12, "0x%04x", val);
items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_VENDOR_ID, dec); items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_VENDOR_ID, dec);
} }
} }
@ -302,11 +301,10 @@ static int emit_object_info(struct impl *this, struct device *device)
items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_VENDOR_NAME, str); items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_VENDOR_NAME, str);
} }
if ((str = udev_device_get_property_value(dev, "ID_MODEL_ID")) && *str) { if ((str = udev_device_get_property_value(dev, "ID_MODEL_ID")) && *str) {
char *dec = alloca(6); /* 65535 is max */
int32_t val; int32_t val;
if (spa_atoi32(str, &val, 16)) { if (spa_atoi32(str, &val, 16)) {
snprintf(dec, 6, "%d", val); char *dec = alloca(12); /* 0xffff is max */
snprintf(dec, 12, "0x%04x", val);
items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_PRODUCT_ID, dec); items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_PRODUCT_ID, dec);
} }
} }