don't crash on null strings in printf

passing null pointer for %s is UB but lots of broken programs do it anyway
diff --git a/src/stdio/vfprintf.c b/src/stdio/vfprintf.c
index 4c990e5..b5001ff 100644
--- a/src/stdio/vfprintf.c
+++ b/src/stdio/vfprintf.c
@@ -584,7 +584,7 @@
 		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;