Index | Thread | Search

From:
Greg Steuck <gnezdo@openbsd.org>
Subject:
USB vendor/product sanitization
To:
tech@openbsd.org
Date:
Sat, 15 Aug 2026 00:18:00 -0700

Download raw body.

Thread
I noticed this oddity in my dmesg:
umass0 at uhub5 port 4 configuration 1 interface 0 "Obreey
 Verse
" rev 2.00/1.01 addr 9
umass0: using SCSI over Bulk-Only

Apparently the vendor stuck a trailing \n into both product and vendor
fields. We could trim them though I wonder if it's worth the trouble
(Linux dmesg similarly gets some empty lines). If it is then do we care
to do more than the bare minimum?

diff --git a/sys/dev/usb/usb_subr.c b/sys/dev/usb/usb_subr.c
index 41a53dc1e49..960edba6bc2 100644
--- a/sys/dev/usb/usb_subr.c
+++ b/sys/dev/usb/usb_subr.c
@@ -197,16 +197,18 @@ usbd_get_string(struct usbd_device *dev, int si, char *buf, size_t buflen)
 static void
 usbd_trim_spaces(char *p)
 {
-	char *q, *e;
+	char *q, *e, c;
 
 	if (p == NULL)
 		return;
 	q = e = p;
 	while (*q == ' ')	/* skip leading spaces */
 		q++;
-	while ((*p = *q++))	/* copy string */
-		if (*p++ != ' ') /* remember last non-space */
+	while ((*p = *q++)) {	/* copy string */
+		c = *p++;
+		if (c != ' ' && c != '\n') /* remember last non-space */
 			e = p;
+	}
 	*e = 0;			/* kill trailing spaces */
 }