Add #ifndef NO_PRINTF_PERCENT_N. Since we are fully standardized, we
authorderaadt <deraadt@openbsd.org>
Sat, 3 May 2014 12:36:45 +0000 (12:36 +0000)
committerderaadt <deraadt@openbsd.org>
Sat, 3 May 2014 12:36:45 +0000 (12:36 +0000)
don't use disable %n ourselves.  But Google's Android libc is based
on our libc....  Giving them an easy knob to disable this dangerous
feature easily make their job easier without making our job any harder.
Request from Elliott @ google

lib/libc/stdio/vfprintf.c
lib/libc/stdio/vfwprintf.c

index 86b540e..7f8ff31 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: vfprintf.c,v 1.65 2014/03/19 05:17:01 guenther Exp $  */
+/*     $OpenBSD: vfprintf.c,v 1.66 2014/05/03 12:36:45 deraadt Exp $   */
 /*-
  * Copyright (c) 1990 The Regents of the University of California.
  * All rights reserved.
@@ -801,6 +801,7 @@ fp_common:
                        }
                        break;
 #endif /* FLOATING_POINT */
+#ifndef NO_PRINTF_PERCENT_N
                case 'n':
                        if (flags & LLONGINT)
                                *GETARG(long long *) = ret;
@@ -819,6 +820,7 @@ fp_common:
                        else
                                *GETARG(int *) = ret;
                        continue;       /* no output */
+#endif /* NO_PRINTF_PERCENT_N */
                case 'O':
                        flags |= LONGINT;
                        /*FALLTHROUGH*/
@@ -1317,6 +1319,7 @@ reswitch: switch (ch) {
                                ADDTYPE(T_DOUBLE);
                        break;
 #endif /* FLOATING_POINT */
+#ifndef NO_PRINTF_PERCENT_N
                case 'n':
                        if (flags & LLONGINT)
                                ADDTYPE(TP_LLONG);
@@ -1333,6 +1336,7 @@ reswitch: switch (ch) {
                        else
                                ADDTYPE(TP_INT);
                        continue;       /* no output */
+#endif /* NO_PRINTF_PERCENT_N */
                case 'O':
                        flags |= LONGINT;
                        /*FALLTHROUGH*/
index 7cb08ea..745b4d9 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: vfwprintf.c,v 1.9 2014/03/19 05:17:01 guenther Exp $ */
+/*     $OpenBSD: vfwprintf.c,v 1.10 2014/05/03 12:36:45 deraadt Exp $ */
 /*-
  * Copyright (c) 1990 The Regents of the University of California.
  * All rights reserved.
@@ -784,6 +784,7 @@ fp_common:
                        }
                        break;
 #endif /* FLOATING_POINT */
+#ifndef NO_PRINTF_PERCENT_N
                case 'n':
                        if (flags & LLONGINT)
                                *GETARG(long long *) = ret;
@@ -802,6 +803,7 @@ fp_common:
                        else
                                *GETARG(int *) = ret;
                        continue;       /* no output */
+#endif /* NO_PRINTF_PERCENT_N */
                case 'O':
                        flags |= LONGINT;
                        /*FALLTHROUGH*/
@@ -1296,6 +1298,7 @@ reswitch: switch (ch) {
                                ADDTYPE(T_DOUBLE);
                        break;
 #endif /* FLOATING_POINT */
+#ifndef NO_PRINTF_PERCENT_N
                case 'n':
                        if (flags & LLONGINT)
                                ADDTYPE(TP_LLONG);
@@ -1312,6 +1315,7 @@ reswitch: switch (ch) {
                        else
                                ADDTYPE(TP_INT);
                        continue;       /* no output */
+#endif /* NO_PRINTF_PERCENT_N */
                case 'O':
                        flags |= LONGINT;
                        /*FALLTHROUGH*/