lib/vsprintf.c: don't special-case pointers to address null
authorWolfgang Denk <wd@denx.de>
Tue, 30 Oct 2012 09:19:52 +0000 (09:19 +0000)
committerTom Rini <trini@ti.com>
Fri, 2 Nov 2012 22:13:29 +0000 (15:13 -0700)
The %p format of printf() would print a pointer to address null as
"(null)".  This makes sense in a real OS where a NULL pointer must
never be dereferenced, but this is a bootloader, and there are cases
where accessing the data at address null makes perfect sense.

Remove the special case in lib/vsprintf.c using "#if 0" with a comment
to make clear this was an intentional change and to stop re-adding
this code.

Signed-off-by: Wolfgang Denk <wd@denx.de>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
lib/vsprintf.c

index d7627632d0ae1fa0a3582f2543633c4da7fec86b..dd13bca5a73d73c0924b67d7333bdc501b810eea 100644 (file)
@@ -495,9 +495,15 @@ static char *ip4_addr_string(char *buf, char *end, u8 *addr, int field_width,
 static char *pointer(const char *fmt, char *buf, char *end, void *ptr,
                int field_width, int precision, int flags)
 {
+       /*
+        * Being a boot loader, we explicitly allow pointers to
+        * (physical) address null.
+        */
+#if 0
        if (!ptr)
                return string(buf, end, "(null)", field_width, precision,
                              flags);
+#endif
 
 #ifdef CONFIG_CMD_NET
        switch (*fmt) {