瀏覽代碼

printk: fix bounds checking for log_prefix

Currently log_prefix is testing that the first character of the log level
and facility is less than '0' and greater than '9' (which is always
false).  It should be testing to see if the character less than '0' or
greater than '9' instead.  This patch makes that change.

The code being changed worked because strtoul bombs out (endp isn't
updated) and 0 is returned anyway.

Signed-off-by: William Douglas <william.douglas@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
William Douglas 14 年之前
父節點
當前提交
48e41899e4
共有 1 個文件被更改,包括 1 次插入1 次删除
  1. 1 1
      kernel/printk.c

+ 1 - 1
kernel/printk.c

@@ -595,7 +595,7 @@ static size_t log_prefix(const char *p, unsigned int *level, char *special)
 		/* multi digit including the level and facility number */
 		/* multi digit including the level and facility number */
 		char *endp = NULL;
 		char *endp = NULL;
 
 
-		if (p[1] < '0' && p[1] > '9')
+		if (p[1] < '0' || p[1] > '9')
 			return 0;
 			return 0;
 
 
 		lev = (simple_strtoul(&p[1], &endp, 10) & 7);
 		lev = (simple_strtoul(&p[1], &endp, 10) & 7);