diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c index 1025e802d1bc53811cbec1a879fe5374c688c394..846f57014668a1302c385d7aac034b933503066e 100644 --- a/src/node_device/node_device_udev.c +++ b/src/node_device/node_device_udev.c @@ -191,7 +191,9 @@ static int udevGetUintProperty(struct udev_device *udev_device, /* This function allocates memory from the heap for the property - * value. That memory must be later freed by some other code. */ + * value. That memory must be later freed by some other code. + * Any control characters that cannot be printed in the XML are stripped + * from the string */ static int udevGetDeviceSysfsAttr(struct udev_device *udev_device, const char *attr_name, char **attr_value) @@ -233,6 +235,8 @@ static int udevGetStringSysfsAttr(struct udev_device *udev_device, ret = udevGetDeviceSysfsAttr(udev_device, attr_name, &tmp); + virStringStripControlChars(tmp); + if (tmp != NULL && (STREQ(tmp, ""))) { VIR_FREE(tmp); tmp = NULL;