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_ed25519.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 : struct verification_test { 26 : uchar sig[ 64 ]; 27 : uchar pub[ 32 ]; 28 : uchar msg[ ]; 29 : }; 30 : typedef struct verification_test verification_test_t; 31 : 32 : /* This fuzzer tries to verify random data */ 33 : 34 : int 35 : LLVMFuzzerTestOneInput( uchar const * data, 36 : ulong size ) { 37 : if( FD_UNLIKELY( size<96UL ) ) return -1; 38 : 39 : verification_test_t * const test = ( verification_test_t * const ) data; 40 : ulong sz = size-96UL; 41 : 42 : fd_sha512_t _sha[1]; 43 : fd_sha512_t *sha = fd_sha512_join( fd_sha512_new( _sha ) ); 44 : 45 : int result = fd_ed25519_verify( test->msg, sz, test->sig, test->pub, sha ); 46 : assert( result != FD_ED25519_SUCCESS ); 47 : 48 : FD_FUZZ_MUST_BE_COVERED; 49 : return 0; 50 : }