Line data Source code
1 : #if !FD_HAS_HOSTED 2 : #error "This target requires FD_HAS_HOSTED" 3 : #endif 4 : 5 : #include <stdlib.h> 6 : 7 : #include "fd_grpc_codec.h" 8 : 9 : int 10 : LLVMFuzzerInitialize( int *argc, 11 12 : char ***argv ) { 12 12 : putenv( "FD_LOG_BACKTRACE=0" ); 13 12 : fd_boot( argc, argv ); 14 12 : (void) atexit( fd_halt ); 15 12 : fd_log_level_core_set( 4 ); 16 12 : return 0; 17 12 : } 18 : 19 : int 20 : LLVMFuzzerTestOneInput( uchar const *data, 21 : ulong size ) { 22 : fd_grpc_resp_hdrs_t resp_hdrs; 23 : resp_hdrs.h2_status = 0U; 24 : fd_h2_hdr_matcher_t matcher[1]; 25 : FD_TEST( fd_h2_hdr_matcher_init( matcher, 1UL )==matcher ); 26 : int rc = fd_grpc_h2_read_response_hdrs( &resp_hdrs, matcher, data, size ); 27 : 28 : /* Accept only the two documented outcomes */ 29 : FD_TEST( (rc==FD_H2_SUCCESS) | (rc==FD_H2_ERR_PROTOCOL) ); 30 : 31 : if( rc==FD_H2_SUCCESS ) { 32 : /* Header fields must be in valid ranges on success */ 33 : FD_TEST( resp_hdrs.grpc_status<=FD_GRPC_STATUS_UNAUTHENTICATED ); 34 : FD_TEST( resp_hdrs.grpc_msg_len<=sizeof(resp_hdrs.grpc_msg)); 35 : } 36 : 37 : return 0; 38 : }