Skip to content

Commit cab8c87

Browse files
authored
[libc] Fix race conditions in sprintf_test. (#110624)
1 parent a57a83f commit cab8c87

File tree

1 file changed

+35
-15
lines changed

1 file changed

+35
-15
lines changed

libc/test/src/stdio/sprintf_test.cpp

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,6 @@
2222
// using ::sprintf;
2323
// }
2424

25-
class LlvmLibcSPrintfTest : public LIBC_NAMESPACE::testing::Test {
26-
protected:
27-
char buff[1000];
28-
int written;
29-
};
30-
3125
using LIBC_NAMESPACE::fputil::testing::ForceRoundingMode;
3226
using LIBC_NAMESPACE::fputil::testing::RoundingMode;
3327

@@ -806,7 +800,10 @@ TEST(LlvmLibcSPrintfTest, OctConv) {
806800

807801
#ifndef LIBC_COPT_PRINTF_DISABLE_FLOAT
808802

809-
TEST_F(LlvmLibcSPrintfTest, FloatHexExpConv) {
803+
TEST(LlvmLibcSPrintfTest, FloatHexExpConv) {
804+
char buff[128];
805+
int written;
806+
810807
ForceRoundingMode r(RoundingMode::Nearest);
811808
double inf = LIBC_NAMESPACE::fputil::FPBits<double>::inf().get_val();
812809
double nan = LIBC_NAMESPACE::fputil::FPBits<double>::quiet_nan().get_val();
@@ -1170,7 +1167,10 @@ TEST_F(LlvmLibcSPrintfTest, FloatHexExpConv) {
11701167
" 0x1.00000000000000000000000000000000000000000000000000p+0");
11711168
}
11721169

1173-
TEST_F(LlvmLibcSPrintfTest, FloatDecimalConv) {
1170+
TEST(LlvmLibcSPrintfTest, FloatDecimalConv) {
1171+
char buff[1000];
1172+
int written;
1173+
11741174
ForceRoundingMode r(RoundingMode::Nearest);
11751175
double inf = LIBC_NAMESPACE::fputil::FPBits<double>::inf().get_val();
11761176
double nan = LIBC_NAMESPACE::fputil::FPBits<double>::quiet_nan().get_val();
@@ -1685,7 +1685,10 @@ TEST_F(LlvmLibcSPrintfTest, FloatDecimalConv) {
16851685

16861686
// The long double tests are separated so that their performance can be directly
16871687
// measured.
1688-
TEST_F(LlvmLibcSPrintfTest, FloatDecimalLongDoubleConv) {
1688+
TEST(LlvmLibcSPrintfTest, FloatDecimalLongDoubleConv) {
1689+
char buff[1000];
1690+
int written;
1691+
16891692
ForceRoundingMode r(RoundingMode::Nearest);
16901693

16911694
// Length Modifier Tests.
@@ -2022,7 +2025,10 @@ TEST_F(LlvmLibcSPrintfTest, FloatDecimalLongDoubleConv) {
20222025
#endif // LIBC_TYPES_LONG_DOUBLE_IS_X86_FLOAT80
20232026
}
20242027

2025-
TEST_F(LlvmLibcSPrintfTest, FloatExponentConv) {
2028+
TEST(LlvmLibcSPrintfTest, FloatExponentConv) {
2029+
char buff[1000];
2030+
int written;
2031+
20262032
ForceRoundingMode r(RoundingMode::Nearest);
20272033
double inf = LIBC_NAMESPACE::fputil::FPBits<double>::inf().get_val();
20282034
double nan = LIBC_NAMESPACE::fputil::FPBits<double>::quiet_nan().get_val();
@@ -2508,7 +2514,10 @@ TEST_F(LlvmLibcSPrintfTest, FloatExponentConv) {
25082514
ASSERT_STREQ_LEN(written, buff, "+1.256e-01 001.256e+03");
25092515
}
25102516

2511-
TEST_F(LlvmLibcSPrintfTest, FloatExponentLongDoubleConv) {
2517+
TEST(LlvmLibcSPrintfTest, FloatExponentLongDoubleConv) {
2518+
char buff[1000];
2519+
int written;
2520+
25122521
ForceRoundingMode r(RoundingMode::Nearest);
25132522
// Length Modifier Tests.
25142523

@@ -2629,7 +2638,10 @@ TEST_F(LlvmLibcSPrintfTest, FloatExponentLongDoubleConv) {
26292638
*/
26302639
}
26312640

2632-
TEST_F(LlvmLibcSPrintfTest, FloatAutoConv) {
2641+
TEST(LlvmLibcSPrintfTest, FloatAutoConv) {
2642+
char buff[1000];
2643+
int written;
2644+
26332645
ForceRoundingMode r(RoundingMode::Nearest);
26342646
double inf = LIBC_NAMESPACE::fputil::FPBits<double>::inf().get_val();
26352647
double nan = LIBC_NAMESPACE::fputil::FPBits<double>::quiet_nan().get_val();
@@ -3137,7 +3149,10 @@ TEST_F(LlvmLibcSPrintfTest, FloatAutoConv) {
31373149
ASSERT_STREQ_LEN(written, buff, "+0.126 0001.26e+03");
31383150
}
31393151

3140-
TEST_F(LlvmLibcSPrintfTest, FloatAutoLongDoubleConv) {
3152+
TEST(LlvmLibcSPrintfTest, FloatAutoLongDoubleConv) {
3153+
char buff[1000];
3154+
int written;
3155+
31413156
ForceRoundingMode r(RoundingMode::Nearest);
31423157

31433158
// Length Modifier Tests.
@@ -3292,7 +3307,9 @@ TEST_F(LlvmLibcSPrintfTest, FloatAutoLongDoubleConv) {
32923307

32933308
#if defined(LIBC_COMPILER_HAS_FIXED_POINT) && \
32943309
!defined(LIBC_COPT_PRINTF_DISABLE_FIXED_POINT)
3295-
TEST_F(LlvmLibcSPrintfTest, FixedConv) {
3310+
TEST(LlvmLibcSPrintfTest, FixedConv) {
3311+
char buff[1000];
3312+
int written;
32963313

32973314
// These numeric tests are potentially a little weak, but the fuzz test is
32983315
// more thorough than my handwritten tests tend to be.
@@ -3502,7 +3519,10 @@ TEST_F(LlvmLibcSPrintfTest, FixedConv) {
35023519
// !defined(LIBC_COPT_PRINTF_DISABLE_FIXED_POINT)
35033520

35043521
#ifndef LIBC_COPT_PRINTF_DISABLE_STRERROR
3505-
TEST_F(LlvmLibcSPrintfTest, StrerrorConv) {
3522+
TEST(LlvmLibcSPrintfTest, StrerrorConv) {
3523+
char buff[1000];
3524+
int written;
3525+
35063526
LIBC_NAMESPACE::libc_errno = 0;
35073527
written = LIBC_NAMESPACE::sprintf(buff, "%m");
35083528
ASSERT_STREQ_LEN(written, buff, "Success");

0 commit comments

Comments
 (0)