Line data Source code
1 : #include "../../util/fd_util.h" 2 : #include "fd_lookup.h" 3 : 4 : #include <stdlib.h> 5 : 6 : /* This function is hidden by default */ 7 : int 8 : fd_lookup_ipliteral( struct address buf[static 1], 9 : const char *name, 10 : int family ); 11 : 12 : int 13 : LLVMFuzzerInitialize( int *argc, 14 15 : char ***argv ) { 15 15 : putenv( "FD_LOG_BACKTRACE=0" ); 16 15 : fd_boot( argc, argv ); 17 15 : (void) atexit( fd_halt ); 18 15 : fd_log_level_core_set( 1 ); 19 15 : return 0; 20 15 : } 21 : 22 : 23 : int 24 : LLVMFuzzerTestOneInput( uchar const *data, 25 : ulong size ) { 26 : struct address addr = {0}; 27 : char name[0x1000]; 28 : 29 : if( FD_UNLIKELY( size<2UL )) { 30 : return 1; 31 : } 32 : 33 : uint8_t family_sel = data[ 0 ] & 0x3u; 34 : int family; 35 : switch ( family_sel ) { 36 : case 0: 37 : family = AF_UNSPEC; 38 : break; 39 : case 1: 40 : family = AF_INET; 41 : break; 42 : case 2: 43 : family = AF_INET6; 44 : break; 45 : default: 46 : family = AF_UNSPEC; 47 : break; 48 : } 49 : 50 : ulong name_len = fd_ulong_min( size-1UL, sizeof(name)-1UL ); 51 : fd_memcpy( name, data+1, name_len ); 52 : name[ name_len ] = '\0'; 53 : 54 : int ret = fd_lookup_ipliteral( &addr, name, family ); 55 : 56 : if( ret > 0 ) { 57 : FD_TEST((addr.family==AF_INET) | (addr.family==AF_INET6)); 58 : } 59 : 60 : return 0; 61 : }