am ad534985
: Merge "Disable %n in printf and vfwprintf."
* commit 'ad534985ec3e01d37d46c50caa562f6482f48347': Disable %n in printf and vfwprintf.
This commit is contained in:
commit
bab07de0bc
@ -102,6 +102,7 @@ extern int __sdidinit;
|
||||
#define FLOATING_POINT
|
||||
#define PRINTF_WIDE_CHAR
|
||||
#define SCANF_WIDE_CHAR
|
||||
#define NO_PRINTF_PERCENT_N
|
||||
|
||||
/* OpenBSD exposes these in <stdio.h>, but we only want them exposed to the implementation. */
|
||||
__BEGIN_DECLS
|
||||
|
@ -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*/
|
||||
|
@ -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*/
|
||||
|
@ -220,11 +220,16 @@ TEST(stdio, snprintf_ls) {
|
||||
}
|
||||
|
||||
TEST(stdio, snprintf_n) {
|
||||
#if !defined(__GLIBC__)
|
||||
// http://b/14492135
|
||||
char buf[32];
|
||||
int i = 0;
|
||||
EXPECT_EQ(4, snprintf(buf, sizeof(buf), "a %n b", &i));
|
||||
EXPECT_EQ(2, i);
|
||||
EXPECT_STREQ("a b", buf);
|
||||
int i = 1234;
|
||||
EXPECT_EQ(5, snprintf(buf, sizeof(buf), "a %n b", &i));
|
||||
EXPECT_EQ(1234, i);
|
||||
EXPECT_STREQ("a n b", buf);
|
||||
#else
|
||||
GTEST_LOG_(INFO) << "This test does nothing.\n";
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(stdio, snprintf_smoke) {
|
||||
|
Loading…
Reference in New Issue
Block a user