don't crash on null strings in printf
authorRich Felker <dalias@aerifal.cx>
Thu, 29 Sep 2011 02:07:58 +0000 (22:07 -0400)
committerRich Felker <dalias@aerifal.cx>
Thu, 29 Sep 2011 02:07:58 +0000 (22:07 -0400)
passing null pointer for %s is UB but lots of broken programs do it anyway

src/stdio/vfprintf.c

index 4c990e5e54fa730c755206a9c5a6b4c597e8b2a3..b5001ff2bd05ab6599ca3763f0be27911f0022b9 100644 (file)
@@ -584,7 +584,7 @@ static int printf_core(FILE *f, const char *fmt, va_list *ap, union arg *nl_arg,
                case 'm':
                        if (1) a = strerror(errno); else
                case 's':
-                       a = arg.p;
+                       a = arg.p ? arg.p : "(null)";
                        z = memchr(a, 0, p);
                        if (!z) z=a+p;
                        else p=z-a;