[klibc] [PATCH] Fixes bug which strips every other digit in klibc-utils dmesg output

Anthony Fok anthony.fok at thizgroup.com
Tue May 27 14:00:23 PDT 2008


There is a bug in the way which klibc/usr/utils/dmesg.c tries to strip
the initial <[0-7]> from kernel messages.  The bug causes every other
numerical digit to be stripped from the output.  Fixed.

A bug report with lots of details has been filed for Debian and Ubuntu:
 * http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=483186
 * https://bugs.launchpad.net/ubuntu/+source/klibc/+bug/235282

Signed-off-by: Anthony Fok <anthony.fok at thizgroup.com>
---
diff -Nur -x '*.orig' -x '*~' klibc-1.5.9/usr/utils/dmesg.c
klibc-1.5.9.new/usr/utils/dmesg.c
--- klibc-1.5.9/usr/utils/dmesg.c	2008-03-29 04:25:36.000000000 +0800
+++ klibc-1.5.9.new/usr/utils/dmesg.c	2008-05-27 07:07:36.000000000 +0800
@@ -50,20 +50,14 @@
 		exit(1);
 	}

-	while (buf[i] && i < len)
-		switch (buf[i]) {
-		case '<':
-			if (i == 0 || buf[i-1] == '\n')
-				i++;
-		case '0' ... '9':
-			if (i > 0 && buf[i-1] == '<')
-				i++;
-		case '>':
-			if (i > 0 && isdigit(buf[i-1]))
-				i++;
-		default:
-			putchar(buf[i++]);
-		}
+	while (buf[i] && i < len) {
+		if (i == 0 || buf[i-1] == '\n')
+			if (buf[i] == '<')
+				if (isdigit(buf[++i]))
+					if (buf[++i] == '>')
+						i++;
+		putchar(buf[i++]);
+	}

 	if (buf[i-1] != '\n')
 		putchar('\n');



More information about the klibc mailing list