DragonFlyBSD Kernel Audit
DF-1093 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/bus/ppbus/ppbconf.c b/sys/bus/ppbus/ppbconf.c
index 0000000..1111111 100644
--- a/sys/bus/ppbus/ppbconf.c
+++ b/sys/bus/ppbus/ppbconf.c
@@ -237,38 +237,48 @@
 		str[i] = (str[i] == ';') ? '\0' : str[i];
 
 	if ((token = search_token(str, len, "MFG")) != NULL ||
-		(token = search_token(str, len, "MANUFACTURER")) != NULL)
+		(token = search_token(str, len, "MANUFACTURER")) != NULL) {
+		char *val = search_token(token, UNKNOWN_LENGTH, ":");
 		kprintf("ppbus%d: <%s", unit,
-			search_token(token, UNKNOWN_LENGTH, ":") + 1);
-	else
+			val != NULL ? val + 1 : "");
+	} else
 		kprintf("ppbus%d: <unknown", unit);
 
 	if ((token = search_token(str, len, "MDL")) != NULL ||
-		(token = search_token(str, len, "MODEL")) != NULL)
-		kprintf(" %s",
-			search_token(token, UNKNOWN_LENGTH, ":") + 1);
-	else
+		(token = search_token(str, len, "MODEL")) != NULL) {
+		char *val = search_token(token, UNKNOWN_LENGTH, ":");
+		kprintf(" %s", val != NULL ? val + 1 : "");
+	} else
 		kprintf(" unknown");
 
-	if ((token = search_token(str, len, "VER")) != NULL)
-		kprintf("/%s",
-			search_token(token, UNKNOWN_LENGTH, ":") + 1);
-
-	if ((token = search_token(str, len, "REV")) != NULL)
-		kprintf(".%s",
-			search_token(token, UNKNOWN_LENGTH, ":") + 1);
+	if ((token = search_token(str, len, "VER")) != NULL) {
+		char *val = search_token(token, UNKNOWN_LENGTH, ":");
+		if (val != NULL)
+			kprintf("/%s", val + 1);
+	}
+
+	if ((token = search_token(str, len, "REV")) != NULL) {
+		char *val = search_token(token, UNKNOWN_LENGTH, ":");
+		if (val != NULL)
+			kprintf(".%s", val + 1);
+	}
 
 	kprintf(">");
 
 	if ((token = search_token(str, len, "CLS")) != NULL) {
-		class = search_token(token, UNKNOWN_LENGTH, ":") + 1;
-		kprintf(" %s", class);
+		char *val = search_token(token, UNKNOWN_LENGTH, ":");
+		if (val != NULL) {
+			class = val + 1;
+			kprintf(" %s", class);
+		}
 	}
 
 	if ((token = search_token(str, len, "CMD")) != NULL ||
-		(token = search_token(str, len, "COMMAND")) != NULL)
-		kprintf(" %s",
-			search_token(token, UNKNOWN_LENGTH, ":") + 1);
+		(token = search_token(str, len, "COMMAND")) != NULL) {
+		char *val = search_token(token, UNKNOWN_LENGTH, ":");
+		if (val != NULL)
+			kprintf(" %s", val + 1);
+	}
 
 	kprintf("\n");