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 <stdlib.h> 7 : 8 : #include "fd_url.h" 9 : #include "../../util/fd_util.h" 10 : 11 : int 12 : LLVMFuzzerInitialize( int * argc, 13 15 : char *** argv ) { 14 : /* Set up shell without signal handlers */ 15 15 : putenv( "FD_LOG_BACKTRACE=0" ); 16 15 : putenv( "FD_LOG_PATH=" ); 17 15 : fd_boot( argc, argv ); 18 15 : fd_log_level_core_set(0); /* crash on debug log */ 19 15 : return 0; 20 15 : } 21 : 22 : static void 23 : bounds_check( uchar const * c0, 24 : ulong s0, 25 : char const * c1_, 26 0 : ulong s1 ) { 27 0 : if( !s1 ) return; 28 0 : uchar const * c1 = (uchar const *)c1_; 29 0 : assert( s1<=s0 ); 30 0 : assert( c1>=c0 ); 31 0 : assert( c1<c0+s0 ); 32 0 : assert( c1+s1<=c0+s0 ); 33 0 : } 34 : 35 : int 36 : LLVMFuzzerTestOneInput( uchar const * data, 37 : ulong size ) { 38 : fd_url_t url_[1]; 39 : fd_url_t * url = fd_url_parse_cstr( url_, (char const *)data, size, NULL ); 40 : if( url ) { 41 : bounds_check( data, size, url->scheme, url->scheme_len ); 42 : bounds_check( data, size, url->host, url->host_len ); 43 : bounds_check( data, size, url->port, url->port_len ); 44 : bounds_check( data, size, url->tail, url->tail_len ); 45 : } 46 : return 0; 47 : }