powerpc/xmon: use isspace/isxdigit/isalnum from linux/ctype.h
authorVincent Bernat <vincent@bernat.im>
Tue, 15 Jul 2014 11:43:47 +0000 (13:43 +0200)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 29 Dec 2014 04:45:43 +0000 (15:45 +1100)
isxdigit() macro definition is the same.

isalnum() from linux/ctype.h will accept additional latin non-ASCII
characters. This is harmless since this macro is used in scanhex() which
parses user input.

isspace() from linux/ctype.h will accept vertical tab and form feed but
not NULL. The use of this macro is modified to accept NULL as
well. Additional characters are harmless since this macro is also only
used in scanhex().

Signed-off-by: Vincent Bernat <vincent@bernat.im>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/xmon/xmon.c

index 5b150f0c5df94a39587ea6b519e12192d28bce3c..e66ace703a69454a611d54e3a9b832449b51cf3a 100644 (file)
@@ -25,6 +25,7 @@
 #include <linux/irq.h>
 #include <linux/bug.h>
 #include <linux/nmi.h>
+#include <linux/ctype.h>
 
 #include <asm/ptrace.h>
 #include <asm/string.h>
@@ -183,14 +184,6 @@ extern void xmon_leave(void);
 #define GETWORD(v)     (((v)[0] << 24) + ((v)[1] << 16) + ((v)[2] << 8) + (v)[3])
 #endif
 
-#define isxdigit(c)    (('0' <= (c) && (c) <= '9') \
-                        || ('a' <= (c) && (c) <= 'f') \
-                        || ('A' <= (c) && (c) <= 'F'))
-#define isalnum(c)     (('0' <= (c) && (c) <= '9') \
-                        || ('a' <= (c) && (c) <= 'z') \
-                        || ('A' <= (c) && (c) <= 'Z'))
-#define isspace(c)     (c == ' ' || c == '\t' || c == 10 || c == 13 || c == 0)
-
 static char *help_string = "\
 Commands:\n\
   b    show breakpoints\n\
@@ -2164,9 +2157,6 @@ static void dump_pacas(void)
 }
 #endif
 
-#define isxdigit(c)    (('0' <= (c) && (c) <= '9') \
-                        || ('a' <= (c) && (c) <= 'f') \
-                        || ('A' <= (c) && (c) <= 'F'))
 static void
 dump(void)
 {
@@ -2569,7 +2559,7 @@ scanhex(unsigned long *vp)
                int i;
                for (i=0; i<63; i++) {
                        c = inchar();
-                       if (isspace(c)) {
+                       if (isspace(c) || c == '\0') {
                                termch = c;
                                break;
                        }