Skip to content

Commit fb559c1

Browse files
tests: Fill fuzzing coverage gaps for functions in util/translation.h
1 parent b74f3d6 commit fb559c1

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

src/test/fuzz/string.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,4 +119,10 @@ void test_one_input(const std::vector<uint8_t>& buffer)
119119
int64_t amount_out;
120120
(void)ParseFixedPoint(random_string_1, fuzzed_data_provider.ConsumeIntegralInRange<int>(0, 1024), &amount_out);
121121
}
122+
{
123+
(void)Untranslated(random_string_1);
124+
const bilingual_str bs1{random_string_1, random_string_2};
125+
const bilingual_str bs2{random_string_2, random_string_1};
126+
(void)(bs1 + bs2);
127+
}
122128
}

src/test/fuzz/strprintf.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <test/fuzz/fuzz.h>
77
#include <tinyformat.h>
88
#include <util/strencodings.h>
9+
#include <util/translation.h>
910

1011
#include <algorithm>
1112
#include <cstdint>
@@ -16,6 +17,7 @@ void test_one_input(const std::vector<uint8_t>& buffer)
1617
{
1718
FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
1819
const std::string format_string = fuzzed_data_provider.ConsumeRandomLengthString(64);
20+
const bilingual_str bilingual_string{format_string, format_string};
1921

2022
const int digits_in_format_specifier = std::count_if(format_string.begin(), format_string.end(), IsDigit);
2123

@@ -47,72 +49,90 @@ void test_one_input(const std::vector<uint8_t>& buffer)
4749

4850
try {
4951
(void)strprintf(format_string, (signed char*)nullptr);
52+
(void)tinyformat::format(bilingual_string, (signed char*)nullptr);
5053
} catch (const tinyformat::format_error&) {
5154
}
5255
try {
5356
(void)strprintf(format_string, (unsigned char*)nullptr);
57+
(void)tinyformat::format(bilingual_string, (unsigned char*)nullptr);
5458
} catch (const tinyformat::format_error&) {
5559
}
5660
try {
5761
(void)strprintf(format_string, (void*)nullptr);
62+
(void)tinyformat::format(bilingual_string, (void*)nullptr);
5863
} catch (const tinyformat::format_error&) {
5964
}
6065
try {
6166
(void)strprintf(format_string, (bool*)nullptr);
67+
(void)tinyformat::format(bilingual_string, (bool*)nullptr);
6268
} catch (const tinyformat::format_error&) {
6369
}
6470
try {
6571
(void)strprintf(format_string, (float*)nullptr);
72+
(void)tinyformat::format(bilingual_string, (float*)nullptr);
6673
} catch (const tinyformat::format_error&) {
6774
}
6875
try {
6976
(void)strprintf(format_string, (double*)nullptr);
77+
(void)tinyformat::format(bilingual_string, (double*)nullptr);
7078
} catch (const tinyformat::format_error&) {
7179
}
7280
try {
7381
(void)strprintf(format_string, (int16_t*)nullptr);
82+
(void)tinyformat::format(bilingual_string, (int16_t*)nullptr);
7483
} catch (const tinyformat::format_error&) {
7584
}
7685
try {
7786
(void)strprintf(format_string, (uint16_t*)nullptr);
87+
(void)tinyformat::format(bilingual_string, (uint16_t*)nullptr);
7888
} catch (const tinyformat::format_error&) {
7989
}
8090
try {
8191
(void)strprintf(format_string, (int32_t*)nullptr);
92+
(void)tinyformat::format(bilingual_string, (int32_t*)nullptr);
8293
} catch (const tinyformat::format_error&) {
8394
}
8495
try {
8596
(void)strprintf(format_string, (uint32_t*)nullptr);
97+
(void)tinyformat::format(bilingual_string, (uint32_t*)nullptr);
8698
} catch (const tinyformat::format_error&) {
8799
}
88100
try {
89101
(void)strprintf(format_string, (int64_t*)nullptr);
102+
(void)tinyformat::format(bilingual_string, (int64_t*)nullptr);
90103
} catch (const tinyformat::format_error&) {
91104
}
92105
try {
93106
(void)strprintf(format_string, (uint64_t*)nullptr);
107+
(void)tinyformat::format(bilingual_string, (uint64_t*)nullptr);
94108
} catch (const tinyformat::format_error&) {
95109
}
96110

97111
try {
98112
switch (fuzzed_data_provider.ConsumeIntegralInRange(0, 5)) {
99113
case 0:
100114
(void)strprintf(format_string, fuzzed_data_provider.ConsumeRandomLengthString(32));
115+
(void)tinyformat::format(bilingual_string, fuzzed_data_provider.ConsumeRandomLengthString(32));
101116
break;
102117
case 1:
103118
(void)strprintf(format_string, fuzzed_data_provider.ConsumeRandomLengthString(32).c_str());
119+
(void)tinyformat::format(bilingual_string, fuzzed_data_provider.ConsumeRandomLengthString(32).c_str());
104120
break;
105121
case 2:
106122
(void)strprintf(format_string, fuzzed_data_provider.ConsumeIntegral<signed char>());
123+
(void)tinyformat::format(bilingual_string, fuzzed_data_provider.ConsumeIntegral<signed char>());
107124
break;
108125
case 3:
109126
(void)strprintf(format_string, fuzzed_data_provider.ConsumeIntegral<unsigned char>());
127+
(void)tinyformat::format(bilingual_string, fuzzed_data_provider.ConsumeIntegral<unsigned char>());
110128
break;
111129
case 4:
112130
(void)strprintf(format_string, fuzzed_data_provider.ConsumeIntegral<char>());
131+
(void)tinyformat::format(bilingual_string, fuzzed_data_provider.ConsumeIntegral<char>());
113132
break;
114133
case 5:
115134
(void)strprintf(format_string, fuzzed_data_provider.ConsumeBool());
135+
(void)tinyformat::format(bilingual_string, fuzzed_data_provider.ConsumeBool());
116136
break;
117137
}
118138
} catch (const tinyformat::format_error&) {
@@ -138,27 +158,35 @@ void test_one_input(const std::vector<uint8_t>& buffer)
138158
switch (fuzzed_data_provider.ConsumeIntegralInRange(0, 7)) {
139159
case 0:
140160
(void)strprintf(format_string, fuzzed_data_provider.ConsumeFloatingPoint<float>());
161+
(void)tinyformat::format(bilingual_string, fuzzed_data_provider.ConsumeFloatingPoint<float>());
141162
break;
142163
case 1:
143164
(void)strprintf(format_string, fuzzed_data_provider.ConsumeFloatingPoint<double>());
165+
(void)tinyformat::format(bilingual_string, fuzzed_data_provider.ConsumeFloatingPoint<double>());
144166
break;
145167
case 2:
146168
(void)strprintf(format_string, fuzzed_data_provider.ConsumeIntegral<int16_t>());
169+
(void)tinyformat::format(bilingual_string, fuzzed_data_provider.ConsumeIntegral<int16_t>());
147170
break;
148171
case 3:
149172
(void)strprintf(format_string, fuzzed_data_provider.ConsumeIntegral<uint16_t>());
173+
(void)tinyformat::format(bilingual_string, fuzzed_data_provider.ConsumeIntegral<uint16_t>());
150174
break;
151175
case 4:
152176
(void)strprintf(format_string, fuzzed_data_provider.ConsumeIntegral<int32_t>());
177+
(void)tinyformat::format(bilingual_string, fuzzed_data_provider.ConsumeIntegral<int32_t>());
153178
break;
154179
case 5:
155180
(void)strprintf(format_string, fuzzed_data_provider.ConsumeIntegral<uint32_t>());
181+
(void)tinyformat::format(bilingual_string, fuzzed_data_provider.ConsumeIntegral<uint32_t>());
156182
break;
157183
case 6:
158184
(void)strprintf(format_string, fuzzed_data_provider.ConsumeIntegral<int64_t>());
185+
(void)tinyformat::format(bilingual_string, fuzzed_data_provider.ConsumeIntegral<int64_t>());
159186
break;
160187
case 7:
161188
(void)strprintf(format_string, fuzzed_data_provider.ConsumeIntegral<uint64_t>());
189+
(void)tinyformat::format(bilingual_string, fuzzed_data_provider.ConsumeIntegral<uint64_t>());
162190
break;
163191
}
164192
} catch (const tinyformat::format_error&) {

0 commit comments

Comments
 (0)