Add fuzzing for to_chars_int

This commit is contained in:
Matt Borland
2024-04-18 11:25:38 +02:00
parent 552b5b5be0
commit cfbf18f163
2 changed files with 578 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
// Copyright 2024 Matt Borland
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt
#include <boost/charconv.hpp>
#include <boost/core/detail/string_view.hpp>
#include <iostream>
#include <exception>
extern "C" int LLVMFuzzerTestOneInput(const std::uint8_t* data, std::size_t size)
{
try
{
auto c_data = reinterpret_cast<const char*>(data);
for (int base = 2; base < 36; ++base)
{
char buffer[10]; // Small enough it should force overflows
char c_val {};
boost::charconv::from_chars(c_data, c_data + size, c_val, base);
boost::charconv::to_chars(buffer, buffer + sizeof(buffer), c_val, base);
int i_val {};
boost::charconv::from_chars(c_data, c_data + size, i_val, base);
boost::charconv::to_chars(buffer, buffer + sizeof(buffer), i_val, base);
long l_val {};
boost::charconv::from_chars(c_data, c_data + size, l_val, base);
boost::charconv::to_chars(buffer, buffer + sizeof(buffer), l_val, base);
long long ll_val {};
boost::charconv::from_chars(c_data, c_data + size, ll_val, base);
boost::charconv::to_chars(buffer, buffer + sizeof(buffer), ll_val, base);
unsigned char uc_val {};
boost::charconv::from_chars(c_data, c_data + size, uc_val, base);
boost::charconv::to_chars(buffer, buffer + sizeof(buffer), uc_val, base);
unsigned int ui_val {};
boost::charconv::from_chars(c_data, c_data + size, ui_val, base);
boost::charconv::to_chars(buffer, buffer + sizeof(buffer), ui_val, base);
unsigned long ul_val {};
boost::charconv::from_chars(c_data, c_data + size, ul_val, base);
boost::charconv::to_chars(buffer, buffer + sizeof(buffer), ul_val, base);
unsigned long long ull_val {};
boost::charconv::from_chars(c_data, c_data + size, ull_val, base);
boost::charconv::to_chars(buffer, buffer + sizeof(buffer), ull_val, base);
}
}
catch(...)
{
std::cerr << "Error with: " << data << std::endl;
std::terminate();
}
return 0;
}

View File

@@ -0,0 +1,518 @@
42
1234
-123
41
+12345
34
12
89
33
-45
30±5
123°
123²
2a
0101010
1000
3FC
-42490
-9196899
-7774085
6930655
-6351954
4120933
1161742
9153483
-397939
2888097
3493531
8014768
3387145
-9428932
-9697971
954743
-1405152
-7686226
-409241
6140946
3913358
-5774313
4915817
-5793053
-8571280
7965631
-1916984
6021864
-4650863
4313539
-6853922
1336611
6326853
-8034583
7858797
-2992882
1800428
-683113
-1715451
-2499186
5362527
-5368835
7704148
4299727
9705073
-6307954
1875450
-5882042
-1798622
3819531
-6503811
5653686
-3507678
-483422
7184660
-8484328
5037472
4439428
1470704
881116
-839586
2864576
6992661
8215385
1703819
3922737
-3534785
-7512488
-9262573
8952857
7658753
4354768
9051901
6137247
9636524
-9421725
-3783437
5077991
638884
7281716
3840965
-8794031
-1980867
-7378981
2536183
-2457292
-8203177
-3288073
8446652
-9013480
-2986316
446688
8622921
3414953
-429889
-2286252
-5863868
-7264301
-8256141
-6496191
3439226
4399784
3909537
6944561
6863205
7777327
-7750690
4536103
-4453764
-9192216
7685596
-919559
-2523990
-5916354
-2653905
3960977
8791624
9624971
-4268847
3975922
3716452
-4501650
-715806
-8425870
1569723
5581967
-9010245
2066237
-8411162
-5843181
-2201452
2212917
4411534
9503237
2314409
-4608617
-7460414
7139444
-9151293
-4463942
5907006
-9273983
-1778660
-4839520
-9672291
3129336
9714355
-7511827
886388
-1852002
-2146222
-6788951
7680165
-6334184
-3846738
6234795
9264890
-6550532
5036284
1449430
9810266
-7186809
-1630455
9334305
2268225
-7253760
209095
9261499
4962760
-8103789
-7572613
-2879358
7745141
-8434989
1923
-2771374
5030955
-4118639
7257502
6188676
7660004
-3250660
-4777221
-8185518
1578519
-255890
-3947426
-1085383
-794910
9525752
506862
4977981
4287111
-7604039
6622937
6777613
2416860
-76232
69208
7569191
8230084
6644964
-9038911
-7346811
-9708301
2246034
-9104013
-6613481
7593563
-8929486
4983505
-2547336
4112659
5476437
-7006736
-576668
9522150
3630833
-710467
-5034037
283769
3975175
8059442
3773815
6365959
-7066398
-7181872
-1536746
4206163
6482244
-2204215
5042345
1058187
6860035
2228715
-8088032
4878418
-1657733
-7577238
3410037
-730792
-3643301
963110
-3085673
-4775751
-6200349
6561567
-8340104
-39995
4753502
2801699
4888413
7936962
-5810624
-7110676
9735392
1741203
1695773
7705210
1060929
-6223387
-4397348
-284528
8760421
2491735
7166649
9596759
-9315159
2372951
6238174
4248249
-2887237
9612146
-7603852
-8187075
-7805196
9581960
308736
5188335
1367646
8833739
-9158142
-958476
56614
-9702189
8698067
-6200012
4781723
175643
-346514
9780492
4067016
8637114
-3574373
7323967
-5326810
-5776901
6459138
3278055
-8455224
-5447678
-3820874
-6470010
-7809782
8534207
-7976953
-2493316
2321161
-9409524
9624269
7170858
837372
-4221591
8279771
-2474607
4026613
4798325
4751766
-2230257
-7359976
-9757797
-3787056
-7013698
9521792
-5030202
-9018656
9061783
2798622
6487135
6739426
-7785881
8702840
-6811395
-1360189
8118434
7373104
9791669
-8804423
815259
-7666079
-8264357
1788613
-7033801
4204940
199493
4170687
-2258247
-4451207
2063993
-2866483
2239897
6485858
-5939309
-958999
3118043
8818044
5573746
-5524829
796426
-4833930
5052399
-1442826
2688392
5441784
-1777305
-6755313
3826063
-6928837
1916430
-128145
-5293741
-4280843
-7731962
1152107
-7661280
-6512914
1071320
4841332
-7691478
5010844
-610927
8663735
-5291166
1670046
5501615
-7141262
-3642551
8650047
-4171110
-4538700
3536087
-7422126
833809
6444383
-4687319
-2011831
-4968427
-1934866
-9212164
-2279104
-6221755
-113641
6388778
8149503
8556292
6888235
6412726
-2680187
9082210
-8937640
-263277
-6628529
-8811896
-9732443
-6553361
7947423
4620154
1849036
-6234039
-4827952
1938267
-9358702
-3171542
-3946700
-5331044
1391549
3396828
4497713
1333622
-3732127
8715234
-6039261
8432676
1329376
-8422328
-727727
1623223
-2242227
-4834226
-4766522
-3984622
-4918774
2586589
-7977062
-4962029
-3736223
-5252089
7913607
-8867042
-1781262
7727314
4486952
-5237381
-6058792
-188451
2452347
8289840
7190715
4553597
-1495643
568439
109253
7789019
-9631017
-4741195
8525183
-4104019
4379136
4607709
-8713008
-9501599
-3733306
-8150960
-7991506
679339
4182813
3321666
-953982
-1953289
117963
1401832
8929688
-2022905
7630341
4769303
-6923183
-4243741
-5166610
2744584
-5791476
-6021017
-3727155
-8466205
-3352811
5804736
6636398
2711842
-7824818
-437527
5985188