Line data Source code
1 : #if !FD_HAS_HOSTED 2 : #error "This target requires FD_HAS_HOSTED" 3 : #endif 4 : 5 : #include <assert.h> 6 : #include <stdio.h> 7 : #include <stdlib.h> 8 : 9 : #include "../../util/fd_util.h" 10 : #include "../../util/sanitize/fd_fuzz.h" 11 : #include "fd_base58.h" 12 : 13 : int 14 : LLVMFuzzerInitialize( int * argc, 15 12 : char *** argv ) { 16 : /* Set up shell without signal handlers */ 17 12 : putenv( "FD_LOG_BACKTRACE=0" ); 18 12 : setenv( "FD_LOG_PATH", "", 0 ); 19 12 : fd_boot( argc, argv ); 20 12 : atexit( fd_halt ); 21 12 : fd_log_level_core_set(3); /* crash on warning log */ 22 12 : return 0; 23 12 : } 24 : 25 : int 26 : LLVMFuzzerTestOneInput( uchar const * data, 27 : ulong size ) { 28 : if( FD_UNLIKELY( size < 64UL ) ) return -1; 29 : 30 : #define MAKE_FUZZ_TEST(n) \ 31 : ulong len##n; \ 32 : char enc##n [ FD_BASE58_ENCODED_##n##_SZ ]; \ 33 : char enc##n##_nolen[ FD_BASE58_ENCODED_##n##_SZ ]; \ 34 : uchar dec##n [ n ]; \ 35 : assert( fd_base58_encode_##n( data, &len##n, enc##n ) == enc##n ); \ 36 : assert( strlen( enc##n ) == len##n ); \ 37 : assert( len##n>=n##UL && len##n <= FD_BASE58_ENCODED_##n##_LEN ); \ 38 : assert( fd_base58_decode_##n( enc##n, dec##n ) == dec##n ); \ 39 : assert( !memcmp( dec##n, data, n##UL ) ); \ 40 : assert( fd_base58_encode_##n( data, NULL, enc##n##_nolen ) == enc##n##_nolen ); \ 41 : assert( !strcmp( enc##n##_nolen, enc##n ) ); 42 : 43 : MAKE_FUZZ_TEST(32) 44 : MAKE_FUZZ_TEST(64) 45 : #undef MAKE_FUZZ_TEST 46 : 47 : FD_FUZZ_MUST_BE_COVERED; 48 : return 0; 49 : }