diff --git a/benchmark-sets/headerfiles/README.md b/benchmark-sets/headerfiles/README.md new file mode 100644 index 0000000000..f2053022b2 --- /dev/null +++ b/benchmark-sets/headerfiles/README.md @@ -0,0 +1,9 @@ +Selected 50 projects to test the effectiveness of headerfiles. It should be noted that we have corrected the language settings of the following projects: + +**From c++ to c:** +avahi.yaml, brotli.yaml, capstone.yaml, lcms.yaml, libcoap.yaml, libfido2.yaml, libpcap.yaml, librdkafka.yaml, libtpms.yaml, libvnc.yaml, libxls.yaml, mbedtls.yaml, minizip.yaml, ndpi.yaml, njs.yaml, picotls.yaml, tidy-html5.yaml, unicorn.yaml + +(In case of incorrect settings, prompt will provide a c++ fuzz target example, and LLM will mimic it by including "FuzzydDataProvider.h", causing compilation errors.) + +**From c to c++:** +libjpeg-turbo.yaml, libsndfile.yaml diff --git a/benchmark-sets/headerfiles/avahi.yaml b/benchmark-sets/headerfiles/avahi.yaml new file mode 100644 index 0000000000..0e39418f03 --- /dev/null +++ b/benchmark-sets/headerfiles/avahi.yaml @@ -0,0 +1,56 @@ +"functions": +- "exceptions": [] + "name": "avahi_string_list_new" + "params": + - "name": "txt" + "type": "bool " + "return_type": "void" + "signature": "AvahiStringList * avahi_string_list_new(const char *, void)" +- "exceptions": [] + "name": "avahi_string_list_add_vprintf" + "params": + - "name": "l" + "type": "bool " + - "name": "format" + "type": "bool " + - "name": "va" + "type": "bool " + "return_type": "void" + "signature": "AvahiStringList * avahi_string_list_add_vprintf(AvahiStringList *, const char *, struct __va_list_tag *)" +- "exceptions": [] + "name": "avahi_string_list_add_printf" + "params": + - "name": "l" + "type": "bool " + - "name": "format" + "type": "bool " + "return_type": "void" + "signature": "AvahiStringList * avahi_string_list_add_printf(AvahiStringList *, const char *, void)" +- "exceptions": [] + "name": "avahi_dns_packet_new_reply" + "params": + - "name": "p" + "type": "bool " + - "name": "mtu" + "type": "int" + - "name": "copy_queries" + "type": "int" + - "name": "aa" + "type": "int" + "return_type": "void" + "signature": "AvahiDnsPacket * avahi_dns_packet_new_reply(AvahiDnsPacket *, unsigned int, int, int)" +- "exceptions": [] + "name": "avahi_string_list_add_pair" + "params": + - "name": "l" + "type": "bool " + - "name": "key" + "type": "bool " + - "name": "value" + "type": "bool " + "return_type": "void" + "signature": "AvahiStringList * avahi_string_list_add_pair(AvahiStringList *, const char *, const char *)" +"language": "c" +"project": "avahi" +"target_name": "fuzz-packet" +"target_path": "/src/avahi/fuzz/fuzz-packet.c" diff --git a/benchmark-sets/headerfiles/bind9.yaml b/benchmark-sets/headerfiles/bind9.yaml new file mode 100644 index 0000000000..29c7932a08 --- /dev/null +++ b/benchmark-sets/headerfiles/bind9.yaml @@ -0,0 +1,70 @@ +"functions": +- "exceptions": [] + "name": "dns_view_freezezones" + "params": + - "name": "view" + "type": "bool " + - "name": "value" + "type": "bool" + "return_type": "int" + "signature": "isc_result_t dns_view_freezezones(dns_view_t *, bool)" +- "exceptions": [] + "name": "dns_view_asyncload" + "params": + - "name": "view" + "type": "bool " + - "name": "newonly" + "type": "bool" + - "name": "callback" + "type": "bool " + - "name": "arg" + "type": "bool " + "return_type": "int" + "signature": "isc_result_t dns_view_asyncload(dns_view_t *, bool, dns_zt_callback_t *, void *)" +- "exceptions": [] + "name": "dns_zt_asyncload" + "params": + - "name": "zt" + "type": "bool " + - "name": "newonly" + "type": "bool" + - "name": "loaddone" + "type": "bool " + - "name": "arg" + "type": "bool " + "return_type": "int" + "signature": "isc_result_t dns_zt_asyncload(dns_zt_t *, bool, dns_zt_callback_t *, void *)" +- "exceptions": [] + "name": "dns_zt_freezezones" + "params": + - "name": "zt" + "type": "bool " + - "name": "view" + "type": "bool " + - "name": "freeze" + "type": "bool" + "return_type": "int" + "signature": "isc_result_t dns_zt_freezezones(dns_zt_t *, dns_view_t *, bool)" +- "exceptions": [] + "name": "dns__rbtdb_addrdataset" + "params": + - "name": "db" + "type": "bool " + - "name": "node" + "type": "bool " + - "name": "version" + "type": "bool " + - "name": "now" + "type": "int" + - "name": "rdataset" + "type": "bool " + - "name": "options" + "type": "int" + - "name": "addedrdataset" + "type": "bool " + "return_type": "int" + "signature": "isc_result_t dns__rbtdb_addrdataset(dns_db_t *, dns_dbnode_t *, dns_dbversion_t *, isc_stdtime_t, dns_rdataset_t *, unsigned int, dns_rdataset_t *)" +"language": "c" +"project": "bind9" +"target_name": "dns_qpkey_name_fuzzer" +"target_path": "/src/bind9/fuzz/dns_qpkey_name.c" diff --git a/benchmark-sets/headerfiles/bluez.yaml b/benchmark-sets/headerfiles/bluez.yaml new file mode 100644 index 0000000000..5faf66ce82 --- /dev/null +++ b/benchmark-sets/headerfiles/bluez.yaml @@ -0,0 +1,86 @@ +"functions": +- "exceptions": [] + "name": "g_obex_put_req" + "params": + - "name": "obex" + "type": "bool " + - "name": "data_func" + "type": "bool " + - "name": "complete_func" + "type": "bool " + - "name": "user_data" + "type": "bool " + - "name": "err" + "type": "bool " + - "name": "first_hdr_id" + "type": "int" + "return_type": "int" + "signature": "guint g_obex_put_req(GObex *, GObexDataProducer, GObexFunc, gpointer, GError **, guint, void)" +- "exceptions": [] + "name": "g_obex_new" + "params": + - "name": "io" + "type": "bool " + - "name": "transport_type" + "type": "int" + - "name": "io_rx_mtu" + "type": "size_t" + - "name": "io_tx_mtu" + "type": "size_t" + "return_type": "void" + "signature": "GObex * g_obex_new(GIOChannel *, GObexTransportType, gssize, gssize)" +- "exceptions": [] + "name": "g_obex_get_req" + "params": + - "name": "obex" + "type": "bool " + - "name": "data_func" + "type": "bool " + - "name": "complete_func" + "type": "bool " + - "name": "user_data" + "type": "bool " + - "name": "err" + "type": "bool " + - "name": "first_hdr_id" + "type": "int" + "return_type": "int" + "signature": "guint g_obex_get_req(GObex *, GObexDataConsumer, GObexFunc, gpointer, GError **, guint, void)" +- "exceptions": [] + "name": "g_obex_get_req_pkt" + "params": + - "name": "obex" + "type": "bool " + - "name": "req" + "type": "bool " + - "name": "data_func" + "type": "bool " + - "name": "complete_func" + "type": "bool " + - "name": "user_data" + "type": "bool " + - "name": "err" + "type": "bool " + "return_type": "int" + "signature": "guint g_obex_get_req_pkt(GObex *, GObexPacket *, GObexDataConsumer, GObexFunc, gpointer, GError **)" +- "exceptions": [] + "name": "g_obex_put_req_pkt" + "params": + - "name": "obex" + "type": "bool " + - "name": "req" + "type": "bool " + - "name": "data_func" + "type": "bool " + - "name": "complete_func" + "type": "bool " + - "name": "user_data" + "type": "bool " + - "name": "err" + "type": "bool " + "return_type": "int" + "signature": "guint g_obex_put_req_pkt(GObex *, GObexPacket *, GObexDataProducer, GObexFunc, gpointer, GError **)" +"language": "c" +"project": "bluez" +"target_name": "fuzz_sdp" +"target_path": "/src/fuzz_sdp.c" diff --git a/benchmark-sets/headerfiles/brotli.yaml b/benchmark-sets/headerfiles/brotli.yaml new file mode 100644 index 0000000000..c088f640e9 --- /dev/null +++ b/benchmark-sets/headerfiles/brotli.yaml @@ -0,0 +1,58 @@ +"functions": +- "exceptions": [] + "name": "BrotliDecoderAttachDictionary" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "int" + - "name": "" + "type": "size_t" + - "name": "" + "type": "bool " + "return_type": "int" + "signature": "int BrotliDecoderAttachDictionary(BrotliDecoderStateInternal *, BrotliSharedDictionaryType, size_t, const uint8_t *)" +- "exceptions": [] + "name": "BrotliDecoderIsFinished" + "params": + - "name": "" + "type": "bool " + "return_type": "int" + "signature": "int BrotliDecoderIsFinished(const BrotliDecoderStateInternal *)" +- "exceptions": [] + "name": "BrotliSafeReadBits32Slow" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "size_t" + - "name": "" + "type": "bool " + "return_type": "int" + "signature": "int BrotliSafeReadBits32Slow(const BrotliBitReader *, uint64_t, uint64_t *)" +- "exceptions": [] + "name": "BrotliDecoderDecompress" + "params": + - "name": "" + "type": "size_t" + - "name": "" + "type": "bool " + - "name": "" + "type": "bool " + - "name": "" + "type": "bool " + "return_type": "int" + "signature": "BrotliDecoderResult BrotliDecoderDecompress(size_t, const uint8_t *, size_t *, uint8_t *)" +- "exceptions": [] + "name": "BrotliDecoderTakeOutput" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "bool " + "return_type": "void" + "signature": "const uint8_t * BrotliDecoderTakeOutput(BrotliDecoderStateInternal *, size_t *)" +"language": "c" +"project": "brotli" +"target_name": "decode_fuzzer" +"target_path": "/src/brotli/c/fuzz/decode_fuzzer.c" diff --git a/benchmark-sets/headerfiles/capstone.yaml b/benchmark-sets/headerfiles/capstone.yaml new file mode 100644 index 0000000000..c672515bde --- /dev/null +++ b/benchmark-sets/headerfiles/capstone.yaml @@ -0,0 +1,84 @@ +"functions": +- "exceptions": [] + "name": "BPF_getInstruction" + "params": + - "name": "ud" + "type": "size_t" + - "name": "code" + "type": "bool " + - "name": "code_len" + "type": "size_t" + - "name": "instr" + "type": "bool " + - "name": "size" + "type": "bool " + - "name": "address" + "type": "size_t" + - "name": "info" + "type": "bool " + "return_type": "bool" + "signature": "bool BPF_getInstruction(csh, const uint8_t *, size_t, MCInst *, uint16_t *, uint64_t, void *)" +- "exceptions": [] + "name": "LoongArch_printer" + "params": + - "name": "MI" + "type": "bool " + - "name": "O" + "type": "bool " + - "name": "info" + "type": "bool " + "return_type": "void" + "signature": "void LoongArch_printer(MCInst *, SStream *, void *)" +- "exceptions": [] + "name": "PPC_getInstruction" + "params": + - "name": "ud" + "type": "size_t" + - "name": "code" + "type": "bool " + - "name": "code_len" + "type": "size_t" + - "name": "instr" + "type": "bool " + - "name": "size" + "type": "bool " + - "name": "address" + "type": "size_t" + - "name": "info" + "type": "bool " + "return_type": "bool" + "signature": "bool PPC_getInstruction(csh, const uint8_t *, size_t, MCInst *, uint16_t *, uint64_t, void *)" +- "exceptions": [] + "name": "ARM_getInstruction" + "params": + - "name": "ud" + "type": "size_t" + - "name": "code" + "type": "bool " + - "name": "code_len" + "type": "size_t" + - "name": "instr" + "type": "bool " + - "name": "size" + "type": "bool " + - "name": "address" + "type": "size_t" + - "name": "info" + "type": "bool " + "return_type": "bool" + "signature": "bool ARM_getInstruction(csh, const uint8_t *, size_t, MCInst *, uint16_t *, uint64_t, void *)" +- "exceptions": [] + "name": "AArch64_printer" + "params": + - "name": "MI" + "type": "bool " + - "name": "O" + "type": "bool " + - "name": "info" + "type": "bool " + "return_type": "void" + "signature": "void AArch64_printer(MCInst *, SStream *, void *)" +"language": "c" +"project": "capstone" +"target_name": "driverbin" +"target_path": "/src/capstonev5/suite/fuzz/driverbin.c" diff --git a/benchmark-sets/headerfiles/coturn.yaml b/benchmark-sets/headerfiles/coturn.yaml new file mode 100644 index 0000000000..aa7c3b8ab1 --- /dev/null +++ b/benchmark-sets/headerfiles/coturn.yaml @@ -0,0 +1,110 @@ +"functions": +- "exceptions": [] + "name": "stun_set_allocate_response_str" + "params": + - "name": "buf" + "type": "bool " + - "name": "len" + "type": "bool " + - "name": "tid" + "type": "bool " + - "name": "relayed_addr1" + "type": "bool " + - "name": "relayed_addr2" + "type": "bool " + - "name": "reflexive_addr" + "type": "bool " + - "name": "lifetime" + "type": "int" + - "name": "max_lifetime" + "type": "int" + - "name": "error_code" + "type": "int" + - "name": "reason" + "type": "bool " + - "name": "reservation_token" + "type": "size_t" + - "name": "mobile_id" + "type": "bool " + "return_type": "int" + "signature": "int stun_set_allocate_response_str(uint8_t *, size_t *, stun_tid *, const ioa_addr *, const ioa_addr *, const ioa_addr *, uint32_t, uint32_t, int, const uint8_t *, uint64_t, char *)" +- "exceptions": [] + "name": "stun_set_binding_response" + "params": + - "name": "buf" + "type": "bool " + - "name": "tid" + "type": "bool " + - "name": "reflexive_addr" + "type": "bool " + - "name": "error_code" + "type": "int" + - "name": "reason" + "type": "bool " + "return_type": "int" + "signature": "int stun_set_binding_response(stun_buffer *, stun_tid *, const ioa_addr *, int, const uint8_t *)" +- "exceptions": [] + "name": "stun_set_channel_bind_request" + "params": + - "name": "buf" + "type": "bool " + - "name": "peer_addr" + "type": "bool " + - "name": "channel_number" + "type": "short" + "return_type": "short" + "signature": "uint16_t stun_set_channel_bind_request(stun_buffer *, const ioa_addr *, uint16_t)" +- "exceptions": [] + "name": "stun_set_allocate_response" + "params": + - "name": "buf" + "type": "bool " + - "name": "tid" + "type": "bool " + - "name": "relayed_addr1" + "type": "bool " + - "name": "relayed_addr2" + "type": "bool " + - "name": "reflexive_addr" + "type": "bool " + - "name": "lifetime" + "type": "int" + - "name": "max_lifetime" + "type": "int" + - "name": "error_code" + "type": "int" + - "name": "reason" + "type": "bool " + - "name": "reservation_token" + "type": "size_t" + - "name": "mobile_id" + "type": "bool " + "return_type": "int" + "signature": "int stun_set_allocate_response(stun_buffer *, stun_tid *, const ioa_addr *, const ioa_addr *, const ioa_addr *, uint32_t, uint32_t, int, const uint8_t *, uint64_t, char *)" +- "exceptions": [] + "name": "stun_set_binding_response_str" + "params": + - "name": "buf" + "type": "bool " + - "name": "len" + "type": "bool " + - "name": "tid" + "type": "bool " + - "name": "reflexive_addr" + "type": "bool " + - "name": "error_code" + "type": "int" + - "name": "reason" + "type": "bool " + - "name": "cookie" + "type": "int" + - "name": "old_stun" + "type": "int" + - "name": "no_stun_backward_compatibility" + "type": "int" + "return_type": "int" + "signature": "int stun_set_binding_response_str(uint8_t *, size_t *, stun_tid *, const ioa_addr *, int, const uint8_t *, uint32_t, int, int)" +"language": "c" +"project": "coturn" +"target_name": "FuzzStun" +"target_path": "/src/coturn/fuzzing/FuzzStun.c" diff --git a/benchmark-sets/headerfiles/croaring.yaml b/benchmark-sets/headerfiles/croaring.yaml new file mode 100644 index 0000000000..438e7b73a4 --- /dev/null +++ b/benchmark-sets/headerfiles/croaring.yaml @@ -0,0 +1,52 @@ +"functions": +- "exceptions": [] + "name": "roaring_bitmap_or_many" + "params": + - "name": "" + "type": "size_t" + - "name": "" + "type": "bool " + "return_type": "void" + "signature": "roaring_bitmap_t * roaring_bitmap_or_many(size_t, const roaring_bitmap_t **)" +- "exceptions": [] + "name": "roaring_bitmap_lazy_xor_inplace" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "bool " + "return_type": "void" + "signature": "void roaring_bitmap_lazy_xor_inplace(roaring_bitmap_t *, const roaring_bitmap_t *)" +- "exceptions": [] + "name": "roaring_bitmap_add_offset" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "size_t" + "return_type": "void" + "signature": "roaring_bitmap_t * roaring_bitmap_add_offset(const roaring_bitmap_t *, int64_t)" +- "exceptions": [] + "name": "roaring_bitmap_xor_many" + "params": + - "name": "" + "type": "size_t" + - "name": "" + "type": "bool " + "return_type": "void" + "signature": "roaring_bitmap_t * roaring_bitmap_xor_many(size_t, const roaring_bitmap_t **)" +- "exceptions": [] + "name": "roaring_bitmap_lazy_or" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "bool " + - "name": "" + "type": "bool" + "return_type": "void" + "signature": "roaring_bitmap_t * roaring_bitmap_lazy_or(const roaring_bitmap_t *, const roaring_bitmap_t *, const _Bool)" +"language": "c" +"project": "croaring" +"target_name": "croaring_fuzzer" +"target_path": "/src/croaring_fuzzer.c" diff --git a/benchmark-sets/headerfiles/igraph.yaml b/benchmark-sets/headerfiles/igraph.yaml new file mode 100644 index 0000000000..d5c0f63cb3 --- /dev/null +++ b/benchmark-sets/headerfiles/igraph.yaml @@ -0,0 +1,22 @@ +"functions": +- "exceptions": [] + "name": "igraph_sparsemat_arpack_rssolve" + "params": + - "name": "A" + "type": "bool " + - "name": "options" + "type": "bool " + - "name": "storage" + "type": "bool " + - "name": "values" + "type": "bool " + - "name": "vectors" + "type": "bool " + - "name": "solvemethod" + "type": "int" + "return_type": "int" + "signature": "igraph_error_t igraph_sparsemat_arpack_rssolve(const igraph_sparsemat_t *, igraph_arpack_options_t *, igraph_arpack_storage_t *, igraph_vector_t *, igraph_matrix_t *, igraph_sparsemat_solve_t)" +"language": "c" +"project": "igraph" +"target_name": "read_pajek" +"target_path": "/src/igraph/fuzzing/read_pajek.cpp" diff --git a/benchmark-sets/headerfiles/kamailio.yaml b/benchmark-sets/headerfiles/kamailio.yaml new file mode 100644 index 0000000000..9fd5cb9567 --- /dev/null +++ b/benchmark-sets/headerfiles/kamailio.yaml @@ -0,0 +1,26 @@ +"functions": +- "exceptions": [] + "name": "tcp_init_children" + "params": + - "name": "woneinit" + "type": "bool " + "return_type": "int" + "signature": "int tcp_init_children(int *)" +- "exceptions": [] + "name": "tcp_receive_loop" + "params": + - "name": "unix_sock" + "type": "int" + "return_type": "void" + "signature": "void tcp_receive_loop(int)" +- "exceptions": [] + "name": "fix_actions" + "params": + - "name": "a" + "type": "bool " + "return_type": "int" + "signature": "int fix_actions(struct action *)" +"language": "c" +"project": "kamailio" +"target_name": "fuzz_uri" +"target_path": "/src/kamailio/misc/fuzz/fuzz_uri.c" diff --git a/benchmark-sets/headerfiles/krb5.yaml b/benchmark-sets/headerfiles/krb5.yaml new file mode 100644 index 0000000000..183b747d1d --- /dev/null +++ b/benchmark-sets/headerfiles/krb5.yaml @@ -0,0 +1,130 @@ +"functions": +- "exceptions": [] + "name": "krb5_gss_store_cred_into" + "params": + - "name": "minor_status" + "type": "bool " + - "name": "input_cred_handle" + "type": "bool " + - "name": "cred_usage" + "type": "int" + - "name": "desired_mech" + "type": "bool " + - "name": "overwrite_cred" + "type": "int" + - "name": "default_cred" + "type": "int" + - "name": "cred_store" + "type": "bool " + - "name": "elements_stored" + "type": "bool " + - "name": "cred_usage_stored" + "type": "bool " + "return_type": "int" + "signature": "OM_uint32 krb5_gss_store_cred_into(OM_uint32 *, gss_cred_id_t, gss_cred_usage_t, const gss_OID, OM_uint32, OM_uint32, gss_const_key_value_set_t, gss_OID_set *, gss_cred_usage_t *)" +- "exceptions": [] + "name": "iakerb_gss_accept_sec_context" + "params": + - "name": "minor_status" + "type": "bool " + - "name": "context_handle" + "type": "bool " + - "name": "verifier_cred_handle" + "type": "bool " + - "name": "input_token" + "type": "bool " + - "name": "input_chan_bindings" + "type": "bool " + - "name": "src_name" + "type": "bool " + - "name": "mech_type" + "type": "bool " + - "name": "output_token" + "type": "bool " + - "name": "ret_flags" + "type": "bool " + - "name": "time_rec" + "type": "bool " + - "name": "delegated_cred_handle" + "type": "bool " + "return_type": "int" + "signature": "OM_uint32 iakerb_gss_accept_sec_context(OM_uint32 *, gss_ctx_id_t *, gss_cred_id_t, gss_buffer_t, gss_channel_bindings_t, gss_name_t *, gss_OID *, gss_buffer_t, OM_uint32 *, OM_uint32 *, gss_cred_id_t *)" +- "exceptions": [] + "name": "krb5_gss_store_cred" + "params": + - "name": "minor_status" + "type": "bool " + - "name": "input_cred_handle" + "type": "bool " + - "name": "cred_usage" + "type": "int" + - "name": "desired_mech" + "type": "bool " + - "name": "overwrite_cred" + "type": "int" + - "name": "default_cred" + "type": "int" + - "name": "elements_stored" + "type": "bool " + - "name": "cred_usage_stored" + "type": "bool " + "return_type": "int" + "signature": "OM_uint32 krb5_gss_store_cred(OM_uint32 *, gss_cred_id_t, gss_cred_usage_t, const gss_OID, OM_uint32, OM_uint32, gss_OID_set *, gss_cred_usage_t *)" +- "exceptions": [] + "name": "krb5_gss_acquire_cred_impersonate_name" + "params": + - "name": "minor_status" + "type": "bool " + - "name": "impersonator_cred_handle" + "type": "bool " + - "name": "desired_name" + "type": "bool " + - "name": "time_req" + "type": "int" + - "name": "desired_mechs" + "type": "bool " + - "name": "cred_usage" + "type": "int" + - "name": "output_cred_handle" + "type": "bool " + - "name": "actual_mechs" + "type": "bool " + - "name": "time_rec" + "type": "bool " + "return_type": "int" + "signature": "OM_uint32 krb5_gss_acquire_cred_impersonate_name(OM_uint32 *, const gss_cred_id_t, const gss_name_t, OM_uint32, const gss_OID_set, gss_cred_usage_t, gss_cred_id_t *, gss_OID_set *, OM_uint32 *)" +- "exceptions": [] + "name": "iakerb_gss_init_sec_context" + "params": + - "name": "minor_status" + "type": "bool " + - "name": "claimant_cred_handle" + "type": "bool " + - "name": "context_handle" + "type": "bool " + - "name": "target_name" + "type": "bool " + - "name": "mech_type" + "type": "bool " + - "name": "req_flags" + "type": "int" + - "name": "time_req" + "type": "int" + - "name": "input_chan_bindings" + "type": "bool " + - "name": "input_token" + "type": "bool " + - "name": "actual_mech_type" + "type": "bool " + - "name": "output_token" + "type": "bool " + - "name": "ret_flags" + "type": "bool " + - "name": "time_rec" + "type": "bool " + "return_type": "int" + "signature": "OM_uint32 iakerb_gss_init_sec_context(OM_uint32 *, gss_cred_id_t, gss_ctx_id_t *, gss_name_t, gss_OID, OM_uint32, OM_uint32, gss_channel_bindings_t, gss_buffer_t, gss_OID *, gss_buffer_t, OM_uint32 *, OM_uint32 *)" +"language": "c" +"project": "krb5" +"target_name": "fuzz_json" +"target_path": "/src/krb5/src/tests/fuzzing/fuzz_json.c" diff --git a/benchmark-sets/headerfiles/lcms.yaml b/benchmark-sets/headerfiles/lcms.yaml new file mode 100644 index 0000000000..f707a4f169 --- /dev/null +++ b/benchmark-sets/headerfiles/lcms.yaml @@ -0,0 +1,84 @@ +"functions": +- "exceptions": [] + "name": "cmsCreateDeviceLinkFromCubeFileTHR" + "params": + - "name": "ContextID" + "type": "bool " + - "name": "cFileName" + "type": "bool " + "return_type": "void" + "signature": "cmsHPROFILE cmsCreateDeviceLinkFromCubeFileTHR(cmsContext, const char *)" +- "exceptions": [] + "name": "cmsCreateProofingTransform" + "params": + - "name": "InputProfile" + "type": "bool " + - "name": "InputFormat" + "type": "int" + - "name": "OutputProfile" + "type": "bool " + - "name": "OutputFormat" + "type": "int" + - "name": "ProofingProfile" + "type": "bool " + - "name": "nIntent" + "type": "int" + - "name": "ProofingIntent" + "type": "int" + - "name": "dwFlags" + "type": "int" + "return_type": "void" + "signature": "cmsHTRANSFORM cmsCreateProofingTransform(cmsHPROFILE, cmsUInt32Number, cmsHPROFILE, cmsUInt32Number, cmsHPROFILE, cmsUInt32Number, cmsUInt32Number, cmsUInt32Number)" +- "exceptions": [] + "name": "cmsCreateDeviceLinkFromCubeFile" + "params": + - "name": "cFileName" + "type": "bool " + "return_type": "void" + "signature": "cmsHPROFILE cmsCreateDeviceLinkFromCubeFile(const char *)" +- "exceptions": [] + "name": "_cmsDefaultICCintents" + "params": + - "name": "ContextID" + "type": "bool " + - "name": "nProfiles" + "type": "int" + - "name": "TheIntents" + "type": "bool " + - "name": "hProfiles" + "type": "bool " + - "name": "BPC" + "type": "bool " + - "name": "AdaptationStates" + "type": "bool " + - "name": "dwFlags" + "type": "int" + "return_type": "void" + "signature": "cmsPipeline * _cmsDefaultICCintents(cmsContext, cmsUInt32Number, cmsUInt32Number *, cmsHPROFILE *, cmsBool *, cmsFloat64Number *, cmsUInt32Number)" +- "exceptions": [] + "name": "cmsCreateProofingTransformTHR" + "params": + - "name": "ContextID" + "type": "bool " + - "name": "InputProfile" + "type": "bool " + - "name": "InputFormat" + "type": "int" + - "name": "OutputProfile" + "type": "bool " + - "name": "OutputFormat" + "type": "int" + - "name": "ProofingProfile" + "type": "bool " + - "name": "nIntent" + "type": "int" + - "name": "ProofingIntent" + "type": "int" + - "name": "dwFlags" + "type": "int" + "return_type": "void" + "signature": "cmsHTRANSFORM cmsCreateProofingTransformTHR(cmsContext, cmsHPROFILE, cmsUInt32Number, cmsHPROFILE, cmsUInt32Number, cmsHPROFILE, cmsUInt32Number, cmsUInt32Number, cmsUInt32Number)" +"language": "c" +"project": "lcms" +"target_name": "cms_cie_cam02_fuzzer" +"target_path": "/src/cms_cie_cam02_fuzzer.c" diff --git a/benchmark-sets/headerfiles/libbpf.yaml b/benchmark-sets/headerfiles/libbpf.yaml new file mode 100644 index 0000000000..4be20ce6cf --- /dev/null +++ b/benchmark-sets/headerfiles/libbpf.yaml @@ -0,0 +1,44 @@ +"functions": +- "exceptions": [] + "name": "bpf_object__load" + "params": + - "name": "obj" + "type": "bool " + "return_type": "int" + "signature": "int bpf_object__load(struct bpf_object *)" +- "exceptions": [] + "name": "bpf_object__open" + "params": + - "name": "path" + "type": "bool " + "return_type": "void" + "signature": "struct bpf_object * bpf_object__open(const char *)" +- "exceptions": [] + "name": "bpf_object__load_skeleton" + "params": + - "name": "s" + "type": "bool " + "return_type": "int" + "signature": "int bpf_object__load_skeleton(struct bpf_object_skeleton *)" +- "exceptions": [] + "name": "bpf_object__open_skeleton" + "params": + - "name": "s" + "type": "bool " + - "name": "opts" + "type": "bool " + "return_type": "int" + "signature": "int bpf_object__open_skeleton(struct bpf_object_skeleton *, const struct bpf_object_open_opts *)" +- "exceptions": [] + "name": "bpf_object__open_file" + "params": + - "name": "path" + "type": "bool " + - "name": "opts" + "type": "bool " + "return_type": "void" + "signature": "struct bpf_object * bpf_object__open_file(const char *, const struct bpf_object_open_opts *)" +"language": "c" +"project": "libbpf" +"target_name": "bpf-object-fuzzer" +"target_path": "/src/libbpf/fuzz/bpf-object-fuzzer.c" diff --git a/benchmark-sets/headerfiles/libcoap.yaml b/benchmark-sets/headerfiles/libcoap.yaml new file mode 100644 index 0000000000..b53ba9bc56 --- /dev/null +++ b/benchmark-sets/headerfiles/libcoap.yaml @@ -0,0 +1,84 @@ +"functions": +- "exceptions": [] + "name": "coap_ws_read" + "params": + - "name": "session" + "type": "bool " + - "name": "data" + "type": "bool " + - "name": "datalen" + "type": "size_t" + "return_type": "size_t" + "signature": "ssize_t coap_ws_read(coap_session_t *, uint8_t *, size_t)" +- "exceptions": [] + "name": "coap_new_client_session_oscore_pki" + "params": + - "name": "ctx" + "type": "bool " + - "name": "local_if" + "type": "bool " + - "name": "server" + "type": "bool " + - "name": "proto" + "type": "int" + - "name": "pki_data" + "type": "bool " + - "name": "oscore_conf" + "type": "bool " + "return_type": "void" + "signature": "coap_session_t * coap_new_client_session_oscore_pki(coap_context_t *, const coap_address_t *, const coap_address_t *, coap_proto_t, coap_dtls_pki_t *, coap_oscore_conf_t *)" +- "exceptions": [] + "name": "coap_new_client_session_oscore_pki_lkd" + "params": + - "name": "ctx" + "type": "bool " + - "name": "local_if" + "type": "bool " + - "name": "server" + "type": "bool " + - "name": "proto" + "type": "int" + - "name": "pki_data" + "type": "bool " + - "name": "oscore_conf" + "type": "bool " + "return_type": "void" + "signature": "coap_session_t * coap_new_client_session_oscore_pki_lkd(coap_context_t *, const coap_address_t *, const coap_address_t *, coap_proto_t, coap_dtls_pki_t *, coap_oscore_conf_t *)" +- "exceptions": [] + "name": "coap_new_client_session_oscore_psk_lkd" + "params": + - "name": "ctx" + "type": "bool " + - "name": "local_if" + "type": "bool " + - "name": "server" + "type": "bool " + - "name": "proto" + "type": "int" + - "name": "psk_data" + "type": "bool " + - "name": "oscore_conf" + "type": "bool " + "return_type": "void" + "signature": "coap_session_t * coap_new_client_session_oscore_psk_lkd(coap_context_t *, const coap_address_t *, const coap_address_t *, coap_proto_t, coap_dtls_cpsk_t *, coap_oscore_conf_t *)" +- "exceptions": [] + "name": "coap_new_client_session_oscore_psk" + "params": + - "name": "ctx" + "type": "bool " + - "name": "local_if" + "type": "bool " + - "name": "server" + "type": "bool " + - "name": "proto" + "type": "int" + - "name": "psk_data" + "type": "bool " + - "name": "oscore_conf" + "type": "bool " + "return_type": "void" + "signature": "coap_session_t * coap_new_client_session_oscore_psk(coap_context_t *, const coap_address_t *, const coap_address_t *, coap_proto_t, coap_dtls_cpsk_t *, coap_oscore_conf_t *)" +"language": "c" +"project": "libcoap" +"target_name": "pdu_parse_udp_fuzzer" +"target_path": "/src/libcoap/tests/oss-fuzz/pdu_parse_udp_target.c" diff --git a/benchmark-sets/headerfiles/libevent.yaml b/benchmark-sets/headerfiles/libevent.yaml new file mode 100644 index 0000000000..73cb9dd9ba --- /dev/null +++ b/benchmark-sets/headerfiles/libevent.yaml @@ -0,0 +1,54 @@ +"functions": +- "exceptions": [] + "name": "evhttp_accept_socket" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "int" + "return_type": "int" + "signature": "int evhttp_accept_socket(struct evhttp *, int)" +- "exceptions": [] + "name": "evhttp_bind_socket_with_handle" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "bool " + - "name": "" + "type": "short" + "return_type": "void" + "signature": "struct evhttp_bound_socket * evhttp_bind_socket_with_handle(struct evhttp *, const char *, uint16_t)" +- "exceptions": [] + "name": "evhttp_accept_socket_with_handle" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "int" + "return_type": "void" + "signature": "struct evhttp_bound_socket * evhttp_accept_socket_with_handle(struct evhttp *, int)" +- "exceptions": [] + "name": "evhttp_start" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "short" + "return_type": "void" + "signature": "struct evhttp * evhttp_start(const char *, uint16_t)" +- "exceptions": [] + "name": "evhttp_bind_socket" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "bool " + - "name": "" + "type": "short" + "return_type": "int" + "signature": "int evhttp_bind_socket(struct evhttp *, const char *, uint16_t)" +"language": "c++" +"project": "libevent" +"target_name": "dns_config_fuzzer" +"target_path": "/src/dns_config_fuzzer.cc" diff --git a/benchmark-sets/headerfiles/libfido2.yaml b/benchmark-sets/headerfiles/libfido2.yaml new file mode 100644 index 0000000000..fb4221c3ce --- /dev/null +++ b/benchmark-sets/headerfiles/libfido2.yaml @@ -0,0 +1,46 @@ +"functions": +- "exceptions": [] + "name": "mutate" + "params": + - "name": "p" + "type": "bool " + - "name": "seed" + "type": "int" + - "name": "flags" + "type": "int" + "return_type": "void" + "signature": "void mutate(struct param *, unsigned int, unsigned int)" +- "exceptions": [] + "name": "mutate_blob" + "params": + - "name": "blob" + "type": "bool " + "return_type": "void" + "signature": "void mutate_blob(struct blob *)" +- "exceptions": [] + "name": "pack_dummy" + "params": + - "name": "ptr" + "type": "bool " + - "name": "len" + "type": "size_t" + "return_type": "size_t" + "signature": "size_t pack_dummy(uint8_t *, size_t)" +- "exceptions": [] + "name": "mutate_string" + "params": + - "name": "s" + "type": "bool " + "return_type": "void" + "signature": "void mutate_string(char *)" +- "exceptions": [] + "name": "mutate_int" + "params": + - "name": "i" + "type": "bool " + "return_type": "void" + "signature": "void mutate_int(int *)" +"language": "c" +"project": "libfido2" +"target_name": "fuzz_netlink" +"target_path": "/src/libfido2/fuzz/libfuzzer.c" diff --git a/benchmark-sets/headerfiles/libical.yaml b/benchmark-sets/headerfiles/libical.yaml new file mode 100644 index 0000000000..695c1876a7 --- /dev/null +++ b/benchmark-sets/headerfiles/libical.yaml @@ -0,0 +1,60 @@ +"functions": +- "exceptions": [] + "name": "icalcomponent_foreach_recurrence" + "params": + - "name": "comp" + "type": "bool " + - "name": "start" + "type": "bool " + - "name": "end" + "type": "bool " + - "name": "callback" + "type": "bool " + - "name": "callback_data" + "type": "bool " + "return_type": "void" + "signature": "void icalcomponent_foreach_recurrence(icalcomponent *, struct icaltimetype, struct icaltimetype, DW_TAG_subroutine_typeInfinite loop *, void *)" +- "exceptions": [] + "name": "icalcomponent_set_due" + "params": + - "name": "comp" + "type": "bool " + - "name": "v" + "type": "bool " + "return_type": "void" + "signature": "void icalcomponent_set_due(icalcomponent *, struct icaltimetype)" +- "exceptions": [] + "name": "icaltimezone_truncate_vtimezone" + "params": + - "name": "vtz" + "type": "bool " + - "name": "start" + "type": "bool " + - "name": "end" + "type": "bool " + - "name": "ms_compatible" + "type": "int" + "return_type": "void" + "signature": "void icaltimezone_truncate_vtimezone(icalcomponent *, icaltimetype, icaltimetype, int)" +- "exceptions": [] + "name": "icalcomponent_merge_component" + "params": + - "name": "comp" + "type": "bool " + - "name": "comp_to_merge" + "type": "bool " + "return_type": "void" + "signature": "void icalcomponent_merge_component(icalcomponent *, icalcomponent *)" +- "exceptions": [] + "name": "icalcomponent_get_span" + "params": + - "name": "comp" + "type": "bool " + - "name": "" + "type": "bool " + "return_type": "void" + "signature": "struct icaltime_span icalcomponent_get_span(icalcomponent *)" +"language": "c++" +"project": "libical" +"target_name": "libical_extended_fuzzer" +"target_path": "/src/libical_extended_fuzzer.cc" diff --git a/benchmark-sets/headerfiles/libjpeg-turbo.yaml b/benchmark-sets/headerfiles/libjpeg-turbo.yaml new file mode 100644 index 0000000000..2cdb86cffc --- /dev/null +++ b/benchmark-sets/headerfiles/libjpeg-turbo.yaml @@ -0,0 +1,112 @@ +"functions": +- "exceptions": [] + "name": "tjEncodeYUV" + "params": + - "name": "handle" + "type": "bool " + - "name": "srcBuf" + "type": "bool " + - "name": "width" + "type": "int" + - "name": "pitch" + "type": "int" + - "name": "height" + "type": "int" + - "name": "pixelSize" + "type": "int" + - "name": "dstBuf" + "type": "bool " + - "name": "subsamp" + "type": "int" + - "name": "flags" + "type": "int" + "return_type": "int" + "signature": "int tjEncodeYUV(tjhandle, unsigned char *, int, int, int, int, unsigned char *, int, int)" +- "exceptions": [] + "name": "tjCompress" + "params": + - "name": "handle" + "type": "bool " + - "name": "srcBuf" + "type": "bool " + - "name": "width" + "type": "int" + - "name": "pitch" + "type": "int" + - "name": "height" + "type": "int" + - "name": "pixelSize" + "type": "int" + - "name": "jpegBuf" + "type": "bool " + - "name": "jpegSize" + "type": "bool " + - "name": "jpegSubsamp" + "type": "int" + - "name": "jpegQual" + "type": "int" + - "name": "flags" + "type": "int" + "return_type": "int" + "signature": "int tjCompress(tjhandle, unsigned char *, int, int, int, int, unsigned char *, unsigned long *, int, int, int)" +- "exceptions": [] + "name": "tjDecompressToYUV" + "params": + - "name": "handle" + "type": "bool " + - "name": "jpegBuf" + "type": "bool " + - "name": "jpegSize" + "type": "size_t" + - "name": "dstBuf" + "type": "bool " + - "name": "flags" + "type": "int" + "return_type": "int" + "signature": "int tjDecompressToYUV(tjhandle, unsigned char *, unsigned long, unsigned char *, int)" +- "exceptions": [] + "name": "tj3SaveImage16" + "params": + - "name": "handle" + "type": "bool " + - "name": "filename" + "type": "bool " + - "name": "buffer" + "type": "bool " + - "name": "width" + "type": "int" + - "name": "pitch" + "type": "int" + - "name": "height" + "type": "int" + - "name": "pixelFormat" + "type": "int" + "return_type": "int" + "signature": "int tj3SaveImage16(tjhandle, const char *, const J16SAMPLE *, int, int, int, int)" +- "exceptions": [] + "name": "tjDecompress" + "params": + - "name": "handle" + "type": "bool " + - "name": "jpegBuf" + "type": "bool " + - "name": "jpegSize" + "type": "size_t" + - "name": "dstBuf" + "type": "bool " + - "name": "width" + "type": "int" + - "name": "pitch" + "type": "int" + - "name": "height" + "type": "int" + - "name": "pixelSize" + "type": "int" + - "name": "flags" + "type": "int" + "return_type": "int" + "signature": "int tjDecompress(tjhandle, unsigned char *, unsigned long, unsigned char *, int, int, int, int, int)" +"language": "c++" +"project": "libjpeg-turbo" +"target_name": "compress_lossless_fuzzer_dev" +"target_path": "/src/libjpeg-turbo.dev/fuzz/compress_lossless.cc" diff --git a/benchmark-sets/headerfiles/libpcap.yaml b/benchmark-sets/headerfiles/libpcap.yaml new file mode 100644 index 0000000000..523c45085b --- /dev/null +++ b/benchmark-sets/headerfiles/libpcap.yaml @@ -0,0 +1,68 @@ +"functions": +- "exceptions": [] + "name": "pcap_findalldevs_ex" + "params": + - "name": "source" + "type": "bool " + - "name": "auth" + "type": "bool " + - "name": "alldevs" + "type": "bool " + - "name": "errbuf" + "type": "bool " + "return_type": "int" + "signature": "int pcap_findalldevs_ex(const char *, struct pcap_rmtauth *, pcap_if_t **, char *)" +- "exceptions": [] + "name": "pcap_compile_nopcap" + "params": + - "name": "snaplen_arg" + "type": "int" + - "name": "linktype_arg" + "type": "int" + - "name": "program" + "type": "bool " + - "name": "buf" + "type": "bool " + - "name": "optimize" + "type": "int" + - "name": "mask" + "type": "int" + "return_type": "int" + "signature": "int pcap_compile_nopcap(int, int, struct bpf_program *, const char *, int, bpf_u_int32)" +- "exceptions": [] + "name": "pcap_open" + "params": + - "name": "source" + "type": "bool " + - "name": "snaplen" + "type": "int" + - "name": "flags" + "type": "int" + - "name": "read_timeout" + "type": "int" + - "name": "auth" + "type": "bool " + - "name": "errbuf" + "type": "bool " + "return_type": "void" + "signature": "pcap_t * pcap_open(const char *, int, int, int, struct pcap_rmtauth *, char *)" +- "exceptions": [] + "name": "pcap_findalldevs" + "params": + - "name": "alldevsp" + "type": "bool " + - "name": "errbuf" + "type": "bool " + "return_type": "int" + "signature": "int pcap_findalldevs(pcap_if_t **, char *)" +- "exceptions": [] + "name": "pcap_lookupdev" + "params": + - "name": "errbuf" + "type": "bool " + "return_type": "void" + "signature": "char * pcap_lookupdev(char *)" +"language": "c" +"project": "libpcap" +"target_name": "fuzz_rserver" +"target_path": "/src/libpcap/testprogs/fuzz/fuzz_rserver.c" diff --git a/benchmark-sets/headerfiles/librdkafka.yaml b/benchmark-sets/headerfiles/librdkafka.yaml new file mode 100644 index 0000000000..f2c612be48 --- /dev/null +++ b/benchmark-sets/headerfiles/librdkafka.yaml @@ -0,0 +1,18 @@ +"functions": +- "exceptions": [] + "name": "re_regexec" + "params": + - "name": "prog" + "type": "bool " + - "name": "sp" + "type": "bool " + - "name": "sub" + "type": "bool " + - "name": "eflags" + "type": "int" + "return_type": "int" + "signature": "int re_regexec(Reprog *, const char *, Resub *, int)" +"language": "c" +"project": "librdkafka" +"target_name": "fuzz_regex" +"target_path": "/src/librdkafka/tests/fuzzers/fuzz_regex.c" diff --git a/benchmark-sets/headerfiles/libsndfile.yaml b/benchmark-sets/headerfiles/libsndfile.yaml new file mode 100644 index 0000000000..3eedfa956d --- /dev/null +++ b/benchmark-sets/headerfiles/libsndfile.yaml @@ -0,0 +1,62 @@ +"functions": +- "exceptions": [] + "name": "sf_open" + "params": + - "name": "path" + "type": "bool " + - "name": "mode" + "type": "int" + - "name": "sfinfo" + "type": "bool " + "return_type": "void" + "signature": "SNDFILE * sf_open(const char *, int, SF_INFO *)" +- "exceptions": [] + "name": "sf_command" + "params": + - "name": "sndfile" + "type": "bool " + - "name": "command" + "type": "int" + - "name": "data" + "type": "bool " + - "name": "datasize" + "type": "int" + "return_type": "int" + "signature": "int sf_command(SNDFILE *, int, void *, int)" +- "exceptions": [] + "name": "sf_open_fd" + "params": + - "name": "fd" + "type": "int" + - "name": "mode" + "type": "int" + - "name": "sfinfo" + "type": "bool " + - "name": "close_desc" + "type": "int" + "return_type": "void" + "signature": "SNDFILE * sf_open_fd(int, int, SF_INFO *, int)" +- "exceptions": [] + "name": "sf_get_chunk_iterator" + "params": + - "name": "sndfile" + "type": "bool " + - "name": "chunk_info" + "type": "bool " + "return_type": "void" + "signature": "SF_CHUNK_ITERATOR * sf_get_chunk_iterator(SNDFILE *, const SF_CHUNK_INFO *)" +- "exceptions": [] + "name": "sf_set_string" + "params": + - "name": "sndfile" + "type": "bool " + - "name": "str_type" + "type": "int" + - "name": "str" + "type": "bool " + "return_type": "int" + "signature": "int sf_set_string(SNDFILE *, int, const char *)" +"language": "c++" +"project": "libsndfile" +"target_name": "sndfile_fuzzer" +"target_path": "/src/libsndfile/ossfuzz/sndfile_fuzzer.cc" diff --git a/benchmark-sets/headerfiles/libsodium.yaml b/benchmark-sets/headerfiles/libsodium.yaml new file mode 100644 index 0000000000..3d3815c7eb --- /dev/null +++ b/benchmark-sets/headerfiles/libsodium.yaml @@ -0,0 +1,50 @@ +"functions": +- "exceptions": [] + "name": "blake2b_compress_sse41" + "params": + - "name": "S" + "type": "bool " + - "name": "block" + "type": "bool " + "return_type": "int" + "signature": "int blake2b_compress_sse41(blake2b_state *, const uint8_t *)" +- "exceptions": [] + "name": "argon2_initialize" + "params": + - "name": "instance" + "type": "bool " + - "name": "context" + "type": "bool " + "return_type": "int" + "signature": "int argon2_initialize(argon2_instance_t *, argon2_context *)" +- "exceptions": [] + "name": "blake2b_compress_avx2" + "params": + - "name": "S" + "type": "bool " + - "name": "block" + "type": "bool " + "return_type": "int" + "signature": "int blake2b_compress_avx2(blake2b_state *, const uint8_t *)" +- "exceptions": [] + "name": "argon2_finalize" + "params": + - "name": "context" + "type": "bool " + - "name": "instance" + "type": "bool " + "return_type": "void" + "signature": "void argon2_finalize(const argon2_context *, argon2_instance_t *)" +- "exceptions": [] + "name": "ge25519_from_hash" + "params": + - "name": "s" + "type": "bool " + - "name": "h" + "type": "bool " + "return_type": "void" + "signature": "void ge25519_from_hash(unsigned char *, const unsigned char *)" +"language": "c++" +"project": "libsodium" +"target_name": "secret_key_auth_fuzzer" +"target_path": "/src/secret_key_auth_fuzzer.cc" diff --git a/benchmark-sets/headerfiles/libssh.yaml b/benchmark-sets/headerfiles/libssh.yaml new file mode 100644 index 0000000000..ff71980580 --- /dev/null +++ b/benchmark-sets/headerfiles/libssh.yaml @@ -0,0 +1,56 @@ +"functions": +- "exceptions": [] + "name": "ssh_userauth_agent_pubkey" + "params": + - "name": "session" + "type": "bool " + - "name": "username" + "type": "bool " + - "name": "publickey" + "type": "bool " + "return_type": "int" + "signature": "int ssh_userauth_agent_pubkey(ssh_session, const char *, ssh_public_key)" +- "exceptions": [] + "name": "ssh_agent_get_first_ident" + "params": + - "name": "session" + "type": "bool " + - "name": "comment" + "type": "bool " + "return_type": "void" + "signature": "ssh_key ssh_agent_get_first_ident(struct ssh_session_struct *, char **)" +- "exceptions": [] + "name": "ssh_userauth_publickey" + "params": + - "name": "session" + "type": "bool " + - "name": "username" + "type": "bool " + - "name": "privkey" + "type": "bool " + "return_type": "int" + "signature": "int ssh_userauth_publickey(ssh_session, const char *, const ssh_key)" +- "exceptions": [] + "name": "ssh_userauth_agent" + "params": + - "name": "session" + "type": "bool " + - "name": "username" + "type": "bool " + "return_type": "int" + "signature": "int ssh_userauth_agent(ssh_session, const char *)" +- "exceptions": [] + "name": "ssh_userauth_publickey_auto" + "params": + - "name": "session" + "type": "bool " + - "name": "username" + "type": "bool " + - "name": "passphrase" + "type": "bool " + "return_type": "int" + "signature": "int ssh_userauth_publickey_auto(ssh_session, const char *, const char *)" +"language": "c" +"project": "libssh" +"target_name": "ssh_pubkey_fuzzer" +"target_path": "/src/libssh/tests/fuzz/ssh_pubkey_fuzzer.c" diff --git a/benchmark-sets/headerfiles/libssh2.yaml b/benchmark-sets/headerfiles/libssh2.yaml new file mode 100644 index 0000000000..24617b13c4 --- /dev/null +++ b/benchmark-sets/headerfiles/libssh2.yaml @@ -0,0 +1,62 @@ +"functions": +- "exceptions": [] + "name": "libssh2_session_startup" + "params": + - "name": "session" + "type": "bool " + - "name": "sock" + "type": "int" + "return_type": "int" + "signature": "int libssh2_session_startup(LIBSSH2_SESSION *, int)" +- "exceptions": [] + "name": "libssh2_channel_forward_cancel" + "params": + - "name": "listener" + "type": "bool " + "return_type": "int" + "signature": "int libssh2_channel_forward_cancel(LIBSSH2_LISTENER *)" +- "exceptions": [] + "name": "libssh2_channel_read_ex" + "params": + - "name": "channel" + "type": "bool " + - "name": "stream_id" + "type": "int" + - "name": "buf" + "type": "bool " + - "name": "buflen" + "type": "size_t" + "return_type": "size_t" + "signature": "ssize_t libssh2_channel_read_ex(LIBSSH2_CHANNEL *, int, char *, size_t)" +- "exceptions": [] + "name": "libssh2_channel_direct_tcpip_ex" + "params": + - "name": "session" + "type": "bool " + - "name": "host" + "type": "bool " + - "name": "port" + "type": "int" + - "name": "shost" + "type": "bool " + - "name": "sport" + "type": "int" + "return_type": "void" + "signature": "LIBSSH2_CHANNEL * libssh2_channel_direct_tcpip_ex(LIBSSH2_SESSION *, const char *, int, const char *, int)" +- "exceptions": [] + "name": "libssh2_channel_direct_streamlocal_ex" + "params": + - "name": "session" + "type": "bool " + - "name": "socket_path" + "type": "bool " + - "name": "shost" + "type": "bool " + - "name": "sport" + "type": "int" + "return_type": "void" + "signature": "LIBSSH2_CHANNEL * libssh2_channel_direct_streamlocal_ex(LIBSSH2_SESSION *, const char *, const char *, int)" +"language": "c++" +"project": "libssh2" +"target_name": "ssh2_client_fuzzer" +"target_path": "/src/libssh2/tests/ossfuzz/ssh2_client_fuzzer.cc" diff --git a/benchmark-sets/headerfiles/libtpms.yaml b/benchmark-sets/headerfiles/libtpms.yaml new file mode 100644 index 0000000000..00a5545f94 --- /dev/null +++ b/benchmark-sets/headerfiles/libtpms.yaml @@ -0,0 +1,71 @@ +"functions": +- "exceptions": [] + "name": "TPM_Process_SetCapability" + "params": + - "name": "tpm_state" + "type": "bool " + - "name": "response" + "type": "bool " + - "name": "tag" + "type": "short" + - "name": "paramSize" + "type": "int" + - "name": "ordinal" + "type": "int" + - "name": "command" + "type": "bool " + - "name": "transportInternal" + "type": "bool " + "return_type": "int" + "signature": "TPM_RESULT TPM_Process_SetCapability(tpm_state_t *, TPM_STORE_BUFFER *, TPM_TAG, uint32_t, TPM_COMMAND_CODE, unsigned char *, TPM_TRANSPORT_INTERNAL *)" +- "exceptions": [] + "name": "TPM2_Create" + "params": + - "name": "in" + "type": "bool " + - "name": "out" + "type": "bool " + "return_type": "int" + "signature": "TPM_RC TPM2_Create(Create_In *, Create_Out *)" +- "exceptions": [] + "name": "TPM_Process_GetCapabilitySigned" + "params": + - "name": "tpm_state" + "type": "bool " + - "name": "response" + "type": "bool " + - "name": "tag" + "type": "short" + - "name": "paramSize" + "type": "int" + - "name": "ordinal" + "type": "int" + - "name": "command" + "type": "bool " + - "name": "transportInternal" + "type": "bool " + "return_type": "int" + "signature": "TPM_RESULT TPM_Process_GetCapabilitySigned(tpm_state_t *, TPM_STORE_BUFFER *, TPM_TAG, uint32_t, TPM_COMMAND_CODE, unsigned char *, TPM_TRANSPORT_INTERNAL *)" +- "exceptions": [] + "name": "TPM_Process_GetCapability" + "params": + - "name": "tpm_state" + "type": "bool " + - "name": "response" + "type": "bool " + - "name": "tag" + "type": "short" + - "name": "paramSize" + "type": "int" + - "name": "ordinal" + "type": "int" + - "name": "command" + "type": "bool " + - "name": "transportInternal" + "type": "bool " + "return_type": "int" + "signature": "TPM_RESULT TPM_Process_GetCapability(tpm_state_t *, TPM_STORE_BUFFER *, TPM_TAG, uint32_t, TPM_COMMAND_CODE, unsigned char *, TPM_TRANSPORT_INTERNAL *)" +"language": "c" +"project": "libtpms" +"target_name": "fuzz-main" +"target_path": "/src/libtpms/tests/fuzz-main.c" diff --git a/benchmark-sets/headerfiles/libusb.yaml b/benchmark-sets/headerfiles/libusb.yaml new file mode 100644 index 0000000000..4136b63a73 --- /dev/null +++ b/benchmark-sets/headerfiles/libusb.yaml @@ -0,0 +1,74 @@ +"functions": +- "exceptions": [] + "name": "libusb_interrupt_transfer" + "params": + - "name": "dev_handle" + "type": "bool " + - "name": "endpoint" + "type": "char" + - "name": "data" + "type": "bool " + - "name": "length" + "type": "int" + - "name": "transferred" + "type": "bool " + - "name": "timeout" + "type": "int" + "return_type": "int" + "signature": "int libusb_interrupt_transfer(libusb_device_handle *, unsigned char, unsigned char *, int, int *, unsigned int)" +- "exceptions": [] + "name": "libusb_control_transfer" + "params": + - "name": "dev_handle" + "type": "bool " + - "name": "bmRequestType" + "type": "char" + - "name": "bRequest" + "type": "char" + - "name": "wValue" + "type": "short" + - "name": "wIndex" + "type": "short" + - "name": "data" + "type": "bool " + - "name": "wLength" + "type": "short" + - "name": "timeout" + "type": "int" + "return_type": "int" + "signature": "int libusb_control_transfer(libusb_device_handle *, uint8_t, uint8_t, uint16_t, uint16_t, unsigned char *, uint16_t, unsigned int)" +- "exceptions": [] + "name": "libusb_get_string_descriptor_ascii" + "params": + - "name": "dev_handle" + "type": "bool " + - "name": "desc_index" + "type": "char" + - "name": "data" + "type": "bool " + - "name": "length" + "type": "int" + "return_type": "int" + "signature": "int libusb_get_string_descriptor_ascii(libusb_device_handle *, uint8_t, unsigned char *, int)" +- "exceptions": [] + "name": "libusb_get_bos_descriptor" + "params": + - "name": "dev_handle" + "type": "bool " + - "name": "bos" + "type": "bool " + "return_type": "int" + "signature": "int libusb_get_bos_descriptor(libusb_device_handle *, struct libusb_bos_descriptor **)" +- "exceptions": [] + "name": "libusb_get_configuration" + "params": + - "name": "dev_handle" + "type": "bool " + - "name": "config" + "type": "bool " + "return_type": "int" + "signature": "int libusb_get_configuration(libusb_device_handle *, int *)" +"language": "c++" +"project": "libusb" +"target_name": "libusb_fuzzer" +"target_path": "/src/libusb_fuzzer.cc" diff --git a/benchmark-sets/headerfiles/libvnc.yaml b/benchmark-sets/headerfiles/libvnc.yaml new file mode 100644 index 0000000000..ad20b47e86 --- /dev/null +++ b/benchmark-sets/headerfiles/libvnc.yaml @@ -0,0 +1,50 @@ +"functions": +- "exceptions": [] + "name": "rfbStartOnHoldClient" + "params": + - "name": "cl" + "type": "bool " + "return_type": "void" + "signature": "void rfbStartOnHoldClient(rfbClientPtr)" +- "exceptions": [] + "name": "rfbReverseConnection" + "params": + - "name": "rfbScreen" + "type": "bool " + - "name": "host" + "type": "bool " + - "name": "port" + "type": "int" + "return_type": "void" + "signature": "rfbClientPtr rfbReverseConnection(rfbScreenInfoPtr, char *, int)" +- "exceptions": [] + "name": "rfbUpdateClient" + "params": + - "name": "cl" + "type": "bool " + "return_type": "char" + "signature": "rfbBool rfbUpdateClient(rfbClientPtr)" +- "exceptions": [] + "name": "rfbProcessEvents" + "params": + - "name": "screen" + "type": "bool " + - "name": "usec" + "type": "size_t" + "return_type": "char" + "signature": "rfbBool rfbProcessEvents(rfbScreenInfoPtr, long)" +- "exceptions": [] + "name": "rfbRunEventLoop" + "params": + - "name": "screen" + "type": "bool " + - "name": "usec" + "type": "size_t" + - "name": "runInBackground" + "type": "char" + "return_type": "void" + "signature": "void rfbRunEventLoop(rfbScreenInfoPtr, long, rfbBool)" +"language": "c" +"project": "libvnc" +"target_name": "fuzz_server" +"target_path": "/src/libvncserver/test/fuzz_server.c" diff --git a/benchmark-sets/headerfiles/libxls.yaml b/benchmark-sets/headerfiles/libxls.yaml new file mode 100644 index 0000000000..4b6768ee18 --- /dev/null +++ b/benchmark-sets/headerfiles/libxls.yaml @@ -0,0 +1,46 @@ +"functions": +- "exceptions": [] + "name": "xls_open" + "params": + - "name": "file" + "type": "bool " + - "name": "charset" + "type": "bool " + "return_type": "void" + "signature": "xlsWorkBook * xls_open(const char *, const char *)" +- "exceptions": [] + "name": "ole2_open_file" + "params": + - "name": "file" + "type": "bool " + "return_type": "void" + "signature": "OLE2 * ole2_open_file(const char *)" +- "exceptions": [] + "name": "xls_open_file" + "params": + - "name": "file" + "type": "bool " + - "name": "charset" + "type": "bool " + - "name": "outError" + "type": "bool " + "return_type": "void" + "signature": "xlsWorkBook * xls_open_file(const char *, const char *, xls_error_t *)" +- "exceptions": [] + "name": "xls_close_summaryInfo" + "params": + - "name": "pSI" + "type": "bool " + "return_type": "void" + "signature": "void xls_close_summaryInfo(xlsSummaryInfo *)" +- "exceptions": [] + "name": "xls_summaryInfo" + "params": + - "name": "pWB" + "type": "bool " + "return_type": "void" + "signature": "xlsSummaryInfo * xls_summaryInfo(xlsWorkBook *)" +"language": "c" +"project": "libxls" +"target_name": "fuzz_xls" +"target_path": "/src/libxls/fuzz/fuzz_xls.c" diff --git a/benchmark-sets/headerfiles/libyang.yaml b/benchmark-sets/headerfiles/libyang.yaml new file mode 100644 index 0000000000..67b12be1c0 --- /dev/null +++ b/benchmark-sets/headerfiles/libyang.yaml @@ -0,0 +1,76 @@ +"functions": +- "exceptions": [] + "name": "lyd_parse_op" + "params": + - "name": "ctx" + "type": "bool " + - "name": "parent" + "type": "bool " + - "name": "in" + "type": "bool " + - "name": "format" + "type": "int" + - "name": "data_type" + "type": "int" + - "name": "tree" + "type": "bool " + - "name": "op" + "type": "bool " + "return_type": "int" + "signature": "LY_ERR lyd_parse_op(const struct ly_ctx *, struct lyd_node *, struct ly_in *, LYD_FORMAT, DW_TAG_enumeration_typelyd_type, struct lyd_node **, struct lyd_node **)" +- "exceptions": [] + "name": "lyplg_ext_print_info_extension_instance" + "params": + - "name": "ctx" + "type": "bool " + - "name": "ext" + "type": "bool " + - "name": "flag" + "type": "bool " + "return_type": "void" + "signature": "void lyplg_ext_print_info_extension_instance(struct lyspr_ctx *, const struct lysc_ext_instance *, ly_bool *)" +- "exceptions": [] + "name": "yang_print_compiled" + "params": + - "name": "out" + "type": "bool " + - "name": "module" + "type": "bool " + - "name": "options" + "type": "int" + "return_type": "int" + "signature": "LY_ERR yang_print_compiled(struct ly_out *, const struct lys_module *, uint32_t)" +- "exceptions": [] + "name": "ly_ctx_get_yanglib_data" + "params": + - "name": "ctx" + "type": "bool " + - "name": "root_p" + "type": "bool " + - "name": "content_id_format" + "type": "bool " + "return_type": "int" + "signature": "LY_ERR ly_ctx_get_yanglib_data(const struct ly_ctx *, struct lyd_node **, const char *, void)" +- "exceptions": [] + "name": "lyd_parse_ext_op" + "params": + - "name": "ext" + "type": "bool " + - "name": "parent" + "type": "bool " + - "name": "in" + "type": "bool " + - "name": "format" + "type": "int" + - "name": "data_type" + "type": "int" + - "name": "tree" + "type": "bool " + - "name": "op" + "type": "bool " + "return_type": "int" + "signature": "LY_ERR lyd_parse_ext_op(const struct lysc_ext_instance *, struct lyd_node *, struct ly_in *, LYD_FORMAT, DW_TAG_enumeration_typelyd_type, struct lyd_node **, struct lyd_node **)" +"language": "c" +"project": "libyang" +"target_name": "lyd_parse_mem_json" +"target_path": "/src/libyang/tests/fuzz/lyd_parse_mem_json.c" diff --git a/benchmark-sets/headerfiles/lwan.yaml b/benchmark-sets/headerfiles/lwan.yaml new file mode 100644 index 0000000000..ab41584319 --- /dev/null +++ b/benchmark-sets/headerfiles/lwan.yaml @@ -0,0 +1,46 @@ +"functions": +- "exceptions": [] + "name": "lwan_response" + "params": + - "name": "request" + "type": "bool " + - "name": "status" + "type": "int" + "return_type": "void" + "signature": "void lwan_response(struct lwan_request *, DW_TAG_enumeration_typelwan_http_status)" +- "exceptions": [] + "name": "lwan_init" + "params": + - "name": "l" + "type": "bool " + "return_type": "void" + "signature": "void lwan_init(struct lwan *)" +- "exceptions": [] + "name": "lwan_process_request" + "params": + - "name": "l" + "type": "bool " + - "name": "request" + "type": "bool " + "return_type": "void" + "signature": "void lwan_process_request(struct lwan *, struct lwan_request *)" +- "exceptions": [] + "name": "lwan_init_with_config" + "params": + - "name": "l" + "type": "bool " + - "name": "config" + "type": "bool " + "return_type": "void" + "signature": "void lwan_init_with_config(struct lwan *, const struct lwan_config *)" +- "exceptions": [] + "name": "lwan_thread_init" + "params": + - "name": "l" + "type": "bool " + "return_type": "void" + "signature": "void lwan_thread_init(struct lwan *)" +"language": "c++" +"project": "lwan" +"target_name": "h2_huffman_fuzzer" +"target_path": "/src/lwan/src/bin/fuzz/h2_huffman_fuzzer.cc" diff --git a/benchmark-sets/headerfiles/mbedtls.yaml b/benchmark-sets/headerfiles/mbedtls.yaml new file mode 100644 index 0000000000..9478976b0d --- /dev/null +++ b/benchmark-sets/headerfiles/mbedtls.yaml @@ -0,0 +1,53 @@ +"functions": +- "exceptions": [] + "name": "mbedtls_ssl_write" + "params": + - "name": "ssl" + "type": "bool " + - "name": "buf" + "type": "bool " + - "name": "len" + "type": "size_t" + "return_type": "int" + "signature": "int mbedtls_ssl_write(mbedtls_ssl_context *, const unsigned char *, size_t)" +- "exceptions": [] + "name": "mbedtls_ssl_check_record" + "params": + - "name": "ssl" + "type": "bool " + - "name": "buf" + "type": "bool " + - "name": "buflen" + "type": "size_t" + "return_type": "int" + "signature": "int mbedtls_ssl_check_record(const mbedtls_ssl_context *, unsigned char *, size_t)" +- "exceptions": [] + "name": "mbedtls_pk_parse_keyfile" + "params": + - "name": "ctx" + "type": "bool " + - "name": "path" + "type": "bool " + - "name": "pwd" + "type": "bool " + - "name": "f_rng" + "type": "bool " + - "name": "p_rng" + "type": "bool " + "return_type": "int" + "signature": "int mbedtls_pk_parse_keyfile(mbedtls_pk_context *, const char *, const char *, DW_TAG_subroutine_typeInfinite loop *, void *)" +- "exceptions": [] + "name": "mbedtls_ssl_write_early_data" + "params": + - "name": "ssl" + "type": "bool " + - "name": "buf" + "type": "bool " + - "name": "len" + "type": "size_t" + "return_type": "int" + "signature": "int mbedtls_ssl_write_early_data(mbedtls_ssl_context *, const unsigned char *, size_t)" +"language": "c" +"project": "mbedtls" +"target_name": "usepsa-fuzz_x509csr" +"target_path": "/src/mbedtls/programs/fuzz/fuzz_x509csr.c" diff --git a/benchmark-sets/headerfiles/mdbtools.yaml b/benchmark-sets/headerfiles/mdbtools.yaml new file mode 100644 index 0000000000..e2fe76ddcf --- /dev/null +++ b/benchmark-sets/headerfiles/mdbtools.yaml @@ -0,0 +1,54 @@ +"functions": +- "exceptions": [] + "name": "mdb_data_dump" + "params": + - "name": "table" + "type": "bool " + "return_type": "void" + "signature": "void mdb_data_dump(MdbTableDef *)" +- "exceptions": [] + "name": "mdb_print_schema" + "params": + - "name": "mdb" + "type": "bool " + - "name": "outfile" + "type": "bool " + - "name": "tabname" + "type": "bool " + - "name": "dbnamespace" + "type": "bool " + - "name": "export_options" + "type": "int" + "return_type": "int" + "signature": "int mdb_print_schema(MdbHandle *, FILE *, char *, char *, guint32)" +- "exceptions": [] + "name": "mdb_dump_catalog" + "params": + - "name": "mdb" + "type": "bool " + - "name": "obj_type" + "type": "int" + "return_type": "void" + "signature": "void mdb_dump_catalog(MdbHandle *, int)" +- "exceptions": [] + "name": "mdb_table_dump" + "params": + - "name": "entry" + "type": "bool " + "return_type": "void" + "signature": "void mdb_table_dump(MdbCatalogEntry *)" +- "exceptions": [] + "name": "mdb_read_table_by_name" + "params": + - "name": "mdb" + "type": "bool " + - "name": "table_name" + "type": "bool " + - "name": "obj_type" + "type": "int" + "return_type": "void" + "signature": "MdbTableDef * mdb_read_table_by_name(MdbHandle *, gchar *, int)" +"language": "c" +"project": "mdbtools" +"target_name": "fuzz_mdb" +"target_path": "/src/mdbtools/src/fuzz/fuzz_mdb.c" diff --git a/benchmark-sets/headerfiles/minizip.yaml b/benchmark-sets/headerfiles/minizip.yaml new file mode 100644 index 0000000000..5460132df3 --- /dev/null +++ b/benchmark-sets/headerfiles/minizip.yaml @@ -0,0 +1,52 @@ +"functions": +- "exceptions": [] + "name": "mz_zip_entry_is_symlink" + "params": + - "name": "handle" + "type": "bool " + "return_type": "int" + "signature": "int32_t mz_zip_entry_is_symlink(void *)" +- "exceptions": [] + "name": "mz_zip_attrib_is_symlink" + "params": + - "name": "attrib" + "type": "int" + - "name": "version_madeby" + "type": "int" + "return_type": "int" + "signature": "int32_t mz_zip_attrib_is_symlink(uint32_t, int32_t)" +- "exceptions": [] + "name": "mz_zip_locate_first_entry" + "params": + - "name": "handle" + "type": "bool " + - "name": "userdata" + "type": "bool " + - "name": "cb" + "type": "bool " + "return_type": "int" + "signature": "int32_t mz_zip_locate_first_entry(void *, void *, mz_zip_locate_entry_cb)" +- "exceptions": [] + "name": "mz_zip_goto_entry" + "params": + - "name": "handle" + "type": "bool " + - "name": "cd_pos" + "type": "size_t" + "return_type": "int" + "signature": "int32_t mz_zip_goto_entry(void *, int64_t)" +- "exceptions": [] + "name": "mz_zip_locate_next_entry" + "params": + - "name": "handle" + "type": "bool " + - "name": "userdata" + "type": "bool " + - "name": "cb" + "type": "bool " + "return_type": "int" + "signature": "int32_t mz_zip_locate_next_entry(void *, void *, mz_zip_locate_entry_cb)" +"language": "c" +"project": "minizip" +"target_name": "standalone" +"target_path": "/src/minizip-ng/test/fuzz/standalone.c" diff --git a/benchmark-sets/headerfiles/ndpi.yaml b/benchmark-sets/headerfiles/ndpi.yaml new file mode 100644 index 0000000000..8596186110 --- /dev/null +++ b/benchmark-sets/headerfiles/ndpi.yaml @@ -0,0 +1,60 @@ +"functions": +- "exceptions": [] + "name": "mbedtls_cipher_write_tag" + "params": + - "name": "ctx" + "type": "bool " + - "name": "tag" + "type": "bool " + - "name": "tag_len" + "type": "size_t" + "return_type": "int" + "signature": "int mbedtls_cipher_write_tag(mbedtls_cipher_context_t *, unsigned char *, size_t)" +- "exceptions": [] + "name": "mbedtls_cipher_update_ad" + "params": + - "name": "ctx" + "type": "bool " + - "name": "ad" + "type": "bool " + - "name": "ad_len" + "type": "size_t" + "return_type": "int" + "signature": "int mbedtls_cipher_update_ad(mbedtls_cipher_context_t *, const unsigned char *, size_t)" +- "exceptions": [] + "name": "mbedtls_cipher_check_tag" + "params": + - "name": "ctx" + "type": "bool " + - "name": "tag" + "type": "bool " + - "name": "tag_len" + "type": "size_t" + "return_type": "int" + "signature": "int mbedtls_cipher_check_tag(mbedtls_cipher_context_t *, const unsigned char *, size_t)" +- "exceptions": [] + "name": "libinjection_sqli_get_token" + "params": + - "name": "sql_state" + "type": "bool " + - "name": "i" + "type": "int" + "return_type": "void" + "signature": "struct libinjection_sqli_token * libinjection_sqli_get_token(struct libinjection_sqli_state *, int)" +- "exceptions": [] + "name": "libinjection_sqli_lookup_word" + "params": + - "name": "sql_state" + "type": "bool " + - "name": "lookup_type" + "type": "int" + - "name": "str" + "type": "bool " + - "name": "len" + "type": "size_t" + "return_type": "char" + "signature": "char libinjection_sqli_lookup_word(struct libinjection_sqli_state *, int, const char *, size_t)" +"language": "c" +"project": "ndpi" +"target_name": "fuzz_filecfg_risk_domains" +"target_path": "/src/ndpi/fuzz/fuzz_filecfg_risk_domains.c" diff --git a/benchmark-sets/headerfiles/njs.yaml b/benchmark-sets/headerfiles/njs.yaml new file mode 100644 index 0000000000..781ced4f15 --- /dev/null +++ b/benchmark-sets/headerfiles/njs.yaml @@ -0,0 +1,60 @@ +"functions": +- "exceptions": [] + "name": "njs_buffer_new" + "params": + - "name": "vm" + "type": "bool " + - "name": "value" + "type": "bool " + - "name": "start" + "type": "bool " + - "name": "size" + "type": "int" + "return_type": "int" + "signature": "njs_int_t njs_buffer_new(njs_vm_t *, njs_value_t *, const u_char *, uint32_t)" +- "exceptions": [] + "name": "njs_vm_query_string_parse" + "params": + - "name": "vm" + "type": "bool " + - "name": "start" + "type": "bool " + - "name": "end" + "type": "bool " + - "name": "retval" + "type": "bool " + "return_type": "int" + "signature": "njs_int_t njs_vm_query_string_parse(njs_vm_t *, u_char *, u_char *, njs_value_t *)" +- "exceptions": [] + "name": "njs_vm_value_string" + "params": + - "name": "vm" + "type": "bool " + - "name": "dst" + "type": "bool " + - "name": "src" + "type": "bool " + "return_type": "int" + "signature": "njs_int_t njs_vm_value_string(njs_vm_t *, njs_str_t *, njs_value_t *)" +- "exceptions": [] + "name": "njs_vm_exception_string" + "params": + - "name": "vm" + "type": "bool " + - "name": "dst" + "type": "bool " + "return_type": "int" + "signature": "njs_int_t njs_vm_exception_string(njs_vm_t *, njs_str_t *)" +- "exceptions": [] + "name": "njs_vm_clone" + "params": + - "name": "vm" + "type": "bool " + - "name": "external" + "type": "bool " + "return_type": "void" + "signature": "njs_vm_t * njs_vm_clone(njs_vm_t *, njs_external_ptr_t)" +"language": "c" +"project": "njs" +"target_name": "njs_process_script_fuzzer" +"target_path": "/src/njs/external/njs_shell.c" diff --git a/benchmark-sets/headerfiles/oniguruma.yaml b/benchmark-sets/headerfiles/oniguruma.yaml new file mode 100644 index 0000000000..851f2d6f6b --- /dev/null +++ b/benchmark-sets/headerfiles/oniguruma.yaml @@ -0,0 +1,35 @@ +"functions": +- "exceptions": [] + "name": "onig_set_meta_char" + "params": + - "name": "enc" + "type": "bool " + - "name": "what" + "type": "int" + - "name": "code" + "type": "int" + "return_type": "int" + "signature": "int onig_set_meta_char(OnigSyntaxType *, unsigned int, OnigCodePoint)" +- "exceptions": [] + "name": "onig_scan" + "params": + - "name": "reg" + "type": "bool " + - "name": "str" + "type": "bool " + - "name": "end" + "type": "bool " + - "name": "region" + "type": "bool " + - "name": "option" + "type": "int" + - "name": "scan_callback" + "type": "bool " + - "name": "callback_arg" + "type": "bool " + "return_type": "int" + "signature": "int onig_scan(regex_t *, const OnigUChar *, const OnigUChar *, OnigRegion *, OnigOptionType, DW_TAG_subroutine_typeInfinite loop *, void *)" +"language": "c" +"project": "oniguruma" +"target_name": "regset" +"target_path": "/src/oniguruma/harnesses/regset.c" diff --git a/benchmark-sets/headerfiles/openexr.yaml b/benchmark-sets/headerfiles/openexr.yaml new file mode 100644 index 0000000000..618e1e2282 --- /dev/null +++ b/benchmark-sets/headerfiles/openexr.yaml @@ -0,0 +1,58 @@ +"functions": +- "exceptions": [] + "name": "_ZN7Imf_3_318DeepTiledInputFile8readTileEiii" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "int" + - "name": "" + "type": "int" + - "name": "" + "type": "int" + "return_type": "void" + "signature": "void Imf_3_3::DeepTiledInputFile::readTile(int, int, int)" +- "exceptions": [] + "name": "_ZN7Imf_3_314RgbaOutputFile11writePixelsEi" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "int" + "return_type": "void" + "signature": "void Imf_3_3::RgbaOutputFile::writePixels(int)" +- "exceptions": [] + "name": "_ZN7Imf_3_314RgbaOutputFile5ToYca11writePixelsEi" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "int" + "return_type": "void" + "signature": "void Imf_3_3::RgbaOutputFile::ToYca::writePixels(int)" +- "exceptions": [] + "name": "_ZN7Imf_3_318DeepTiledInputPart8readTileEiii" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "int" + - "name": "" + "type": "int" + - "name": "" + "type": "int" + "return_type": "void" + "signature": "void Imf_3_3::DeepTiledInputPart::readTile(int, int, int)" +- "exceptions": [] + "name": "_ZN7Imf_3_310OutputFile10initializeERKNS_6HeaderE" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "bool " + "return_type": "void" + "signature": "void Imf_3_3::OutputFile::initialize(const Header &)" +"language": "c++" +"project": "openexr" +"target_name": "openexr_exrcheck_fuzzer" +"target_path": "/src/openexr/src/test/OpenEXRFuzzTest/oss-fuzz/openexr_exrcheck_fuzzer.cc" diff --git a/benchmark-sets/headerfiles/opusfile.yaml b/benchmark-sets/headerfiles/opusfile.yaml new file mode 100644 index 0000000000..88e3843aa8 --- /dev/null +++ b/benchmark-sets/headerfiles/opusfile.yaml @@ -0,0 +1,58 @@ +"functions": +- "exceptions": [] + "name": "op_read" + "params": + - "name": "_of" + "type": "bool " + - "name": "_pcm" + "type": "bool " + - "name": "_buf_size" + "type": "int" + - "name": "_li" + "type": "bool " + "return_type": "int" + "signature": "int op_read(OggOpusFile *, opus_int16 *, int, int *)" +- "exceptions": [] + "name": "op_test_open" + "params": + - "name": "_of" + "type": "bool " + "return_type": "int" + "signature": "int op_test_open(OggOpusFile *)" +- "exceptions": [] + "name": "op_read_float" + "params": + - "name": "_of" + "type": "bool " + - "name": "_pcm" + "type": "bool " + - "name": "_buf_size" + "type": "int" + - "name": "_li" + "type": "bool " + "return_type": "int" + "signature": "int op_read_float(OggOpusFile *, float *, int, int *)" +- "exceptions": [] + "name": "op_read_float_stereo" + "params": + - "name": "_of" + "type": "bool " + - "name": "_pcm" + "type": "bool " + - "name": "_buf_size" + "type": "int" + "return_type": "int" + "signature": "int op_read_float_stereo(OggOpusFile *, float *, int)" +- "exceptions": [] + "name": "op_open_file" + "params": + - "name": "_path" + "type": "bool " + - "name": "_error" + "type": "bool " + "return_type": "void" + "signature": "OggOpusFile * op_open_file(const char *, int *)" +"language": "c" +"project": "opusfile" +"target_name": "opusfile_fuzzer" +"target_path": "/src/opusfile_fuzzer.c" diff --git a/benchmark-sets/headerfiles/picotls.yaml b/benchmark-sets/headerfiles/picotls.yaml new file mode 100644 index 0000000000..75e9139a6c --- /dev/null +++ b/benchmark-sets/headerfiles/picotls.yaml @@ -0,0 +1,88 @@ +"functions": +- "exceptions": [] + "name": "ptls_send" + "params": + - "name": "tls" + "type": "bool " + - "name": "sendbuf" + "type": "bool " + - "name": "input" + "type": "bool " + - "name": "inlen" + "type": "size_t" + "return_type": "int" + "signature": "int ptls_send(ptls_t *, ptls_buffer_t *, const void *, size_t)" +- "exceptions": [] + "name": "ptls_server_handle_message" + "params": + - "name": "tls" + "type": "bool " + - "name": "sendbuf" + "type": "bool " + - "name": "epoch_offsets" + "type": "bool " + - "name": "in_epoch" + "type": "size_t" + - "name": "input" + "type": "bool " + - "name": "inlen" + "type": "size_t" + - "name": "properties" + "type": "bool " + "return_type": "int" + "signature": "int ptls_server_handle_message(ptls_t *, ptls_buffer_t *, size_t *, size_t, const void *, size_t, ptls_handshake_properties_t *)" +- "exceptions": [] + "name": "ptls_import" + "params": + - "name": "ctx" + "type": "bool " + - "name": "tls" + "type": "bool " + - "name": "params" + "type": "bool " + - "name": "" + "type": "size_t" + "return_type": "int" + "signature": "int ptls_import(ptls_context_t *, ptls_t **, ptls_iovec_t)" +- "exceptions": [] + "name": "ptls_client_handle_message" + "params": + - "name": "tls" + "type": "bool " + - "name": "sendbuf" + "type": "bool " + - "name": "epoch_offsets" + "type": "bool " + - "name": "in_epoch" + "type": "size_t" + - "name": "input" + "type": "bool " + - "name": "inlen" + "type": "size_t" + - "name": "properties" + "type": "bool " + "return_type": "int" + "signature": "int ptls_client_handle_message(ptls_t *, ptls_buffer_t *, size_t *, size_t, const void *, size_t, ptls_handshake_properties_t *)" +- "exceptions": [] + "name": "ptls_handle_message" + "params": + - "name": "tls" + "type": "bool " + - "name": "sendbuf" + "type": "bool " + - "name": "epoch_offsets" + "type": "bool " + - "name": "in_epoch" + "type": "size_t" + - "name": "input" + "type": "bool " + - "name": "inlen" + "type": "size_t" + - "name": "properties" + "type": "bool " + "return_type": "int" + "signature": "int ptls_handle_message(ptls_t *, ptls_buffer_t *, size_t *, size_t, const void *, size_t, ptls_handshake_properties_t *)" +"language": "c" +"project": "picotls" +"target_name": "fuzz-server-hello" +"target_path": "/src/picotls/fuzz/fuzz-server-hello.c" diff --git a/benchmark-sets/headerfiles/pjsip.yaml b/benchmark-sets/headerfiles/pjsip.yaml new file mode 100644 index 0000000000..adcc8280c4 --- /dev/null +++ b/benchmark-sets/headerfiles/pjsip.yaml @@ -0,0 +1,78 @@ +"functions": +- "exceptions": [] + "name": "pjsip_endpt_send_request_stateless" + "params": + - "name": "endpt" + "type": "bool " + - "name": "tdata" + "type": "bool " + - "name": "token" + "type": "bool " + - "name": "cb" + "type": "bool " + "return_type": "int" + "signature": "pj_status_t pjsip_endpt_send_request_stateless(pjsip_endpoint *, pjsip_tx_data *, void *, pjsip_send_callback)" +- "exceptions": [] + "name": "pjsip_endpt_send_raw_to_uri" + "params": + - "name": "endpt" + "type": "bool " + - "name": "p_dst_uri" + "type": "bool " + - "name": "sel" + "type": "bool " + - "name": "raw_data" + "type": "bool " + - "name": "data_len" + "type": "size_t" + - "name": "token" + "type": "bool " + - "name": "cb" + "type": "bool " + "return_type": "int" + "signature": "pj_status_t pjsip_endpt_send_raw_to_uri(pjsip_endpoint *, const pj_str_t *, const pjsip_tpselector *, const void *, pj_size_t, void *, pjsip_tp_send_callback)" +- "exceptions": [] + "name": "pjsip_tsx_retransmit_no_state" + "params": + - "name": "tsx" + "type": "bool " + - "name": "tdata" + "type": "bool " + "return_type": "int" + "signature": "pj_status_t pjsip_tsx_retransmit_no_state(pjsip_transaction *, pjsip_tx_data *)" +- "exceptions": [] + "name": "pjsip_endpt_respond_stateless" + "params": + - "name": "endpt" + "type": "bool " + - "name": "rdata" + "type": "bool " + - "name": "st_code" + "type": "int" + - "name": "st_text" + "type": "bool " + - "name": "hdr_list" + "type": "bool " + - "name": "body" + "type": "bool " + "return_type": "int" + "signature": "pj_status_t pjsip_endpt_respond_stateless(pjsip_endpoint *, pjsip_rx_data *, int, const pj_str_t *, const pjsip_hdr *, const pjsip_msg_body *)" +- "exceptions": [] + "name": "pjmedia_endpt_create_sdp" + "params": + - "name": "endpt" + "type": "bool " + - "name": "pool" + "type": "bool " + - "name": "stream_cnt" + "type": "int" + - "name": "sock_info" + "type": "bool " + - "name": "p_sdp" + "type": "bool " + "return_type": "int" + "signature": "pj_status_t pjmedia_endpt_create_sdp(pjmedia_endpt *, pj_pool_t *, unsigned int, const pjmedia_sock_info *, pjmedia_sdp_session **)" +"language": "c" +"project": "pjsip" +"target_name": "fuzz-crypto" +"target_path": "/src/pjsip/tests/fuzz/fuzz-crypto.c" diff --git a/benchmark-sets/headerfiles/proftpd.yaml b/benchmark-sets/headerfiles/proftpd.yaml new file mode 100644 index 0000000000..28a9ef2a1b --- /dev/null +++ b/benchmark-sets/headerfiles/proftpd.yaml @@ -0,0 +1,68 @@ +"functions": +- "exceptions": [] + "name": "dir_check" + "params": + - "name": "pp" + "type": "bool " + - "name": "cmd" + "type": "bool " + - "name": "group" + "type": "bool " + - "name": "path" + "type": "bool " + - "name": "hidden" + "type": "bool " + "return_type": "int" + "signature": "int dir_check(pool *, cmd_rec *, const char *, const char *, int *)" +- "exceptions": [] + "name": "dir_check_canon" + "params": + - "name": "pp" + "type": "bool " + - "name": "cmd" + "type": "bool " + - "name": "group" + "type": "bool " + - "name": "path" + "type": "bool " + - "name": "hidden" + "type": "bool " + "return_type": "int" + "signature": "int dir_check_canon(pool *, cmd_rec *, const char *, const char *, int *)" +- "exceptions": [] + "name": "core_chmod" + "params": + - "name": "cmd" + "type": "bool " + - "name": "path" + "type": "bool " + - "name": "mode" + "type": "int" + "return_type": "int" + "signature": "int core_chmod(cmd_rec *, const char *, mode_t)" +- "exceptions": [] + "name": "core_chgrp" + "params": + - "name": "cmd" + "type": "bool " + - "name": "path" + "type": "bool " + - "name": "uid" + "type": "int" + - "name": "gid" + "type": "int" + "return_type": "int" + "signature": "int core_chgrp(cmd_rec *, const char *, uid_t, gid_t)" +- "exceptions": [] + "name": "pr_data_xfer" + "params": + - "name": "cl_buf" + "type": "bool " + - "name": "cl_size" + "type": "size_t" + "return_type": "int" + "signature": "int pr_data_xfer(char *, size_t)" +"language": "c" +"project": "proftpd" +"target_name": "json_fuzzer" +"target_path": "/src/proftpd/tests/fuzzing/json_fuzzer.c" diff --git a/benchmark-sets/headerfiles/pupnp.yaml b/benchmark-sets/headerfiles/pupnp.yaml new file mode 100644 index 0000000000..9ac673b08d --- /dev/null +++ b/benchmark-sets/headerfiles/pupnp.yaml @@ -0,0 +1,50 @@ +"functions": +- "exceptions": [] + "name": "ixmlParseBuffer" + "params": + - "name": "buffer" + "type": "bool " + "return_type": "void" + "signature": "IXML_Document * ixmlParseBuffer(const char *)" +- "exceptions": [] + "name": "ixmlParseBufferEx" + "params": + - "name": "buffer" + "type": "bool " + - "name": "retDoc" + "type": "bool " + "return_type": "int" + "signature": "int ixmlParseBufferEx(const char *, IXML_Document **)" +- "exceptions": [] + "name": "ixmlNode_cloneNode" + "params": + - "name": "nodeptr" + "type": "bool " + - "name": "deep" + "type": "int" + "return_type": "void" + "signature": "IXML_Node * ixmlNode_cloneNode(IXML_Node *, int)" +- "exceptions": [] + "name": "ixmlLoadDocument" + "params": + - "name": "xmlFile" + "type": "bool " + "return_type": "void" + "signature": "IXML_Document * ixmlLoadDocument(const char *)" +- "exceptions": [] + "name": "ixmlDocument_importNode" + "params": + - "name": "doc" + "type": "bool " + - "name": "importNode" + "type": "bool " + - "name": "deep" + "type": "int" + - "name": "rtNode" + "type": "bool " + "return_type": "int" + "signature": "int ixmlDocument_importNode(IXML_Document *, IXML_Node *, int, IXML_Node **)" +"language": "c" +"project": "pupnp" +"target_name": "FuzzIxml" +"target_path": "/src/pupnp/fuzzer/FuzzIxml.c" diff --git a/benchmark-sets/headerfiles/sleuthkit.yaml b/benchmark-sets/headerfiles/sleuthkit.yaml new file mode 100644 index 0000000000..1816b4ca6c --- /dev/null +++ b/benchmark-sets/headerfiles/sleuthkit.yaml @@ -0,0 +1,68 @@ +"functions": +- "exceptions": [] + "name": "tsk_fs_open_vol" + "params": + - "name": "a_part_info" + "type": "bool " + - "name": "a_ftype" + "type": "int" + "return_type": "void" + "signature": "TSK_FS_INFO * tsk_fs_open_vol(const TSK_VS_PART_INFO *, TSK_FS_TYPE_ENUM)" +- "exceptions": [] + "name": "tsk_fs_open_vol_decrypt" + "params": + - "name": "a_part_info" + "type": "bool " + - "name": "a_ftype" + "type": "int" + - "name": "a_pass" + "type": "bool " + "return_type": "void" + "signature": "TSK_FS_INFO * tsk_fs_open_vol_decrypt(const TSK_VS_PART_INFO *, TSK_FS_TYPE_ENUM, const char *)" +- "exceptions": [] + "name": "_ZNK12APFSFSCompat5istatE22TSK_FS_ISTAT_FLAG_ENUMP8_IO_FILEmmi" + "params": + - "name": "this" + "type": "bool " + - "name": "istat_flags" + "type": "int" + - "name": "hFile" + "type": "bool " + - "name": "inode_num" + "type": "size_t" + - "name": "numblock" + "type": "size_t" + - "name": "sec_skew" + "type": "int" + "return_type": "char" + "signature": "uint8_t APFSFSCompat::istat(TSK_FS_ISTAT_FLAG_ENUM, FILE *, TSK_INUM_T, TSK_DADDR_T, int32_t)" +- "exceptions": [] + "name": "ntfs_dir_open_meta" + "params": + - "name": "a_fs" + "type": "bool " + - "name": "a_fs_dir" + "type": "bool " + - "name": "a_addr" + "type": "size_t" + - "name": "recursion_depth" + "type": "int" + "return_type": "int" + "signature": "TSK_RETVAL_ENUM ntfs_dir_open_meta(TSK_FS_INFO *, TSK_FS_DIR **, TSK_INUM_T, int)" +- "exceptions": [] + "name": "ffs_dir_open_meta" + "params": + - "name": "a_fs" + "type": "bool " + - "name": "a_fs_dir" + "type": "bool " + - "name": "a_addr" + "type": "size_t" + - "name": "recursion_depth" + "type": "int" + "return_type": "int" + "signature": "TSK_RETVAL_ENUM ffs_dir_open_meta(TSK_FS_INFO *, TSK_FS_DIR **, TSK_INUM_T, int)" +"language": "c++" +"project": "sleuthkit" +"target_name": "sleuthkit_mmls_sun_fuzzer" +"target_path": "/src/sleuthkit_mmls_fuzzer.cc" diff --git a/benchmark-sets/headerfiles/tidy-html5.yaml b/benchmark-sets/headerfiles/tidy-html5.yaml new file mode 100644 index 0000000000..e1a334f087 --- /dev/null +++ b/benchmark-sets/headerfiles/tidy-html5.yaml @@ -0,0 +1,48 @@ +"functions": +- "exceptions": [] + "name": "tidySaveStdout" + "params": + - "name": "tdoc" + "type": "bool " + "return_type": "int" + "signature": "int tidySaveStdout(TidyDoc)" +- "exceptions": [] + "name": "tidySaveString" + "params": + - "name": "tdoc" + "type": "bool " + - "name": "buffer" + "type": "bool " + - "name": "buflen" + "type": "bool " + "return_type": "int" + "signature": "int tidySaveString(TidyDoc, tmbstr, uint *)" +- "exceptions": [] + "name": "tidyParseSource" + "params": + - "name": "tdoc" + "type": "bool " + - "name": "source" + "type": "bool " + "return_type": "int" + "signature": "int tidyParseSource(TidyDoc, TidyInputSource *)" +- "exceptions": [] + "name": "tidyParseStdin" + "params": + - "name": "tdoc" + "type": "bool " + "return_type": "int" + "signature": "int tidyParseStdin(TidyDoc)" +- "exceptions": [] + "name": "tidySaveFile" + "params": + - "name": "tdoc" + "type": "bool " + - "name": "filnam" + "type": "bool " + "return_type": "int" + "signature": "int tidySaveFile(TidyDoc, ctmbstr)" +"language": "c" +"project": "tidy-html5" +"target_name": "tidy_fuzzer" +"target_path": "/src/tidy_fuzzer.c" diff --git a/benchmark-sets/headerfiles/unicorn.yaml b/benchmark-sets/headerfiles/unicorn.yaml new file mode 100644 index 0000000000..e2d3b49226 --- /dev/null +++ b/benchmark-sets/headerfiles/unicorn.yaml @@ -0,0 +1,64 @@ +"functions": +- "exceptions": [] + "name": "decNumberLn" + "params": + - "name": "res" + "type": "bool " + - "name": "rhs" + "type": "bool " + - "name": "set" + "type": "bool " + "return_type": "void" + "signature": "decNumber * decNumberLn(decNumber *, const decNumber *, decContext *)" +- "exceptions": [] + "name": "decNumberSquareRoot" + "params": + - "name": "res" + "type": "bool " + - "name": "rhs" + "type": "bool " + - "name": "set" + "type": "bool " + "return_type": "void" + "signature": "decNumber * decNumberSquareRoot(decNumber *, const decNumber *, decContext *)" +- "exceptions": [] + "name": "ppc64_v3_handle_mmu_fault" + "params": + - "name": "cpu" + "type": "bool " + - "name": "eaddr" + "type": "size_t" + - "name": "rwx" + "type": "int" + - "name": "mmu_idx" + "type": "int" + "return_type": "int" + "signature": "int ppc64_v3_handle_mmu_fault(PowerPCCPU *, vaddr, int, int)" +- "exceptions": [] + "name": "decNumberLog10" + "params": + - "name": "res" + "type": "bool " + - "name": "rhs" + "type": "bool " + - "name": "set" + "type": "bool " + "return_type": "void" + "signature": "decNumber * decNumberLog10(decNumber *, const decNumber *, decContext *)" +- "exceptions": [] + "name": "decNumberPower" + "params": + - "name": "res" + "type": "bool " + - "name": "lhs" + "type": "bool " + - "name": "rhs" + "type": "bool " + - "name": "set" + "type": "bool " + "return_type": "void" + "signature": "decNumber * decNumberPower(decNumber *, const decNumber *, const decNumber *, decContext *)" +"language": "c" +"project": "unicorn" +"target_name": "fuzz_emu_arm_armbe" +"target_path": "/src/unicorn/tests/fuzz/fuzz_emu_arm_armbe.c" diff --git a/benchmark-sets/headerfiles/unit.yaml b/benchmark-sets/headerfiles/unit.yaml new file mode 100644 index 0000000000..dab31fe7c8 --- /dev/null +++ b/benchmark-sets/headerfiles/unit.yaml @@ -0,0 +1,52 @@ +"functions": +- "exceptions": [] + "name": "nxt_runtime_create" + "params": + - "name": "task" + "type": "bool " + "return_type": "int" + "signature": "nxt_int_t nxt_runtime_create(nxt_task_t *)" +- "exceptions": [] + "name": "nxt_process_init_start" + "params": + - "name": "task" + "type": "bool " + - "name": "init" + "type": "bool " + "return_type": "int" + "signature": "nxt_int_t nxt_process_init_start(nxt_task_t *, nxt_process_init_t)" +- "exceptions": [] + "name": "nxt_main_process_start" + "params": + - "name": "thr" + "type": "bool " + - "name": "task" + "type": "bool " + - "name": "rt" + "type": "bool " + "return_type": "int" + "signature": "nxt_int_t nxt_main_process_start(nxt_thread_t *, nxt_task_t *, nxt_runtime_t *)" +- "exceptions": [] + "name": "nxt_process_start" + "params": + - "name": "task" + "type": "bool " + - "name": "process" + "type": "bool " + "return_type": "int" + "signature": "nxt_int_t nxt_process_start(nxt_task_t *, nxt_process_t *)" +- "exceptions": [] + "name": "nxt_http_application_handler" + "params": + - "name": "task" + "type": "bool " + - "name": "r" + "type": "bool " + - "name": "action" + "type": "bool " + "return_type": "void" + "signature": "nxt_http_action_t * nxt_http_application_handler(nxt_task_t *, nxt_http_request_t *, nxt_http_action_t *)" +"language": "c" +"project": "unit" +"target_name": "fuzz_http_h1p_peer" +"target_path": "/src/unit/fuzzing/nxt_http_h1p_peer_fuzz.c" diff --git a/benchmark-sets/headerfiles/utf8proc.yaml b/benchmark-sets/headerfiles/utf8proc.yaml new file mode 100644 index 0000000000..37f8b36d5b --- /dev/null +++ b/benchmark-sets/headerfiles/utf8proc.yaml @@ -0,0 +1,27 @@ +"functions": +- "exceptions": [] + "name": "utf8proc_decompose" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "size_t" + - "name": "" + "type": "bool " + - "name": "" + "type": "size_t" + - "name": "" + "type": "int" + "return_type": "size_t" + "signature": "utf8proc_ssize_t utf8proc_decompose(const utf8proc_uint8_t *, utf8proc_ssize_t, utf8proc_int32_t *, utf8proc_ssize_t, utf8proc_option_t)" +- "exceptions": [] + "name": "utf8proc_errmsg" + "params": + - "name": "" + "type": "size_t" + "return_type": "void" + "signature": "const char * utf8proc_errmsg(utf8proc_ssize_t)" +"language": "c" +"project": "utf8proc" +"target_name": "fuzz_main" +"target_path": "/src/utf8proc/test/fuzz_main.c" diff --git a/benchmark-sets/headerfiles/vlc.yaml b/benchmark-sets/headerfiles/vlc.yaml new file mode 100644 index 0000000000..5dce746355 --- /dev/null +++ b/benchmark-sets/headerfiles/vlc.yaml @@ -0,0 +1,46 @@ +"functions": +- "exceptions": [] + "name": "ExecuteCommand" + "params": + - "name": "p_vlm" + "type": "bool " + - "name": "psz_command" + "type": "bool " + - "name": "pp_message" + "type": "bool " + "return_type": "int" + "signature": "int ExecuteCommand(vlm_t *, const char *, vlm_message_t **)" +- "exceptions": [] + "name": "Preparse" + "params": + - "name": "data" + "type": "bool " + "return_type": "void" + "signature": "void * Preparse(void *)" +- "exceptions": [] + "name": "libvlc_release" + "params": + - "name": "p_instance" + "type": "bool " + "return_type": "void" + "signature": "void libvlc_release(libvlc_instance_t *)" +- "exceptions": [] + "name": "vlm_New" + "params": + - "name": "libvlc" + "type": "bool " + - "name": "psz_vlmconf" + "type": "bool " + "return_type": "void" + "signature": "vlm_t * vlm_New(libvlc_int_t *, const char *)" +- "exceptions": [] + "name": "libvlc_InternalCleanup" + "params": + - "name": "p_libvlc" + "type": "bool " + "return_type": "void" + "signature": "void libvlc_InternalCleanup(libvlc_int_t *)" +"language": "c" +"project": "vlc" +"target_name": "vlc-demux-libfuzzer" +"target_path": "/src/vlc/test/vlc-demux-libfuzzer.c" diff --git a/benchmark-sets/headerfiles/w3m.yaml b/benchmark-sets/headerfiles/w3m.yaml new file mode 100644 index 0000000000..0c6290f499 --- /dev/null +++ b/benchmark-sets/headerfiles/w3m.yaml @@ -0,0 +1,46 @@ +"functions": +- "exceptions": [] + "name": "Stralign_left" + "params": + - "name": "s" + "type": "bool " + - "name": "width" + "type": "int" + "return_type": "void" + "signature": "Str Stralign_left(Str, int)" +- "exceptions": [] + "name": "Strnew_m_charp" + "params": + - "name": "p" + "type": "bool " + "return_type": "void" + "signature": "Str Strnew_m_charp(const char *, void)" +- "exceptions": [] + "name": "Stralign_center" + "params": + - "name": "s" + "type": "bool " + - "name": "width" + "type": "int" + "return_type": "void" + "signature": "Str Stralign_center(Str, int)" +- "exceptions": [] + "name": "Sprintf" + "params": + - "name": "fmt" + "type": "bool " + "return_type": "void" + "signature": "Str Sprintf(char *, void)" +- "exceptions": [] + "name": "Stralign_right" + "params": + - "name": "s" + "type": "bool " + - "name": "width" + "type": "int" + "return_type": "void" + "signature": "Str Stralign_right(Str, int)" +"language": "c" +"project": "w3m" +"target_name": "fuzz_conv" +"target_path": "/src/w3m/fuzz/fuzz-conv.c" diff --git a/benchmark-sets/headerfiles/wasm3.yaml b/benchmark-sets/headerfiles/wasm3.yaml new file mode 100644 index 0000000000..9cc9c9dc8c --- /dev/null +++ b/benchmark-sets/headerfiles/wasm3.yaml @@ -0,0 +1,19 @@ +"functions": +- "exceptions": [] + "name": "m3_GetFunctionName" + "params": + - "name": "" + "type": "bool " + "return_type": "void" + "signature": "const char * m3_GetFunctionName(IM3Function)" +- "exceptions": [] + "name": "m3_GetMemorySize" + "params": + - "name": "" + "type": "bool " + "return_type": "int" + "signature": "uint32_t m3_GetMemorySize(IM3Runtime)" +"language": "c" +"project": "wasm3" +"target_name": "fuzzer" +"target_path": "/src/wasm3/platforms/app_fuzz/fuzzer.c" diff --git a/benchmark-sets/headerfiles/zydis.yaml b/benchmark-sets/headerfiles/zydis.yaml new file mode 100644 index 0000000000..5c8edd30d3 --- /dev/null +++ b/benchmark-sets/headerfiles/zydis.yaml @@ -0,0 +1,54 @@ +"functions": +- "exceptions": [] + "name": "ZydisFormatterBufferRestore" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "size_t" + "return_type": "int" + "signature": "ZyanStatus ZydisFormatterBufferRestore(ZydisFormatterBuffer *, ZyanUPointer)" +- "exceptions": [] + "name": "ZydisFormatterBasePrintPrefixes" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "bool " + - "name": "" + "type": "bool " + "return_type": "int" + "signature": "ZyanStatus ZydisFormatterBasePrintPrefixes(const ZydisFormatter *, ZydisFormatterBuffer *, ZydisFormatterContext *)" +- "exceptions": [] + "name": "ZydisEncoderNopFill" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "size_t" + "return_type": "int" + "signature": "ZyanStatus ZydisEncoderNopFill(void *, ZyanUSize)" +- "exceptions": [] + "name": "ZydisFormatterSetHook" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "int" + - "name": "" + "type": "bool " + "return_type": "int" + "signature": "ZyanStatus ZydisFormatterSetHook(ZydisFormatter *, ZydisFormatterFunction, const void **)" +- "exceptions": [] + "name": "ZydisFormatterBufferGetString" + "params": + - "name": "" + "type": "bool " + - "name": "" + "type": "bool " + "return_type": "int" + "signature": "ZyanStatus ZydisFormatterBufferGetString(ZydisFormatterBuffer *, ZyanString **)" +"language": "c" +"project": "zydis" +"target_name": "ZydisFuzzReEncoding" +"target_path": "/src/zydis/tools/ZydisFuzzShared.c" diff --git a/data_prep/introspector.py b/data_prep/introspector.py index 8126e11994..92aed8ec8b 100755 --- a/data_prep/introspector.py +++ b/data_prep/introspector.py @@ -38,7 +38,9 @@ T = TypeVar('T', str, list, dict, int) # Generic type. TIMEOUT = 45 -MAX_RETRY = 5 +# We intentionally set MAX_RETRY as 0 for just comparing the build success rate +# for initial generated drivers/fuzz targets. +MAX_RETRY = 0 USE_FI_TO_GET_TARGETS = bool(int(os.getenv('OSS_FI_TO_GET_TARGETS', '1'))) diff --git a/data_prep/project_context/context_introspector.py b/data_prep/project_context/context_introspector.py index 90f2806426..29edf7c7a2 100644 --- a/data_prep/project_context/context_introspector.py +++ b/data_prep/project_context/context_introspector.py @@ -6,6 +6,10 @@ from difflib import SequenceMatcher from typing import Any, Optional +# import headerfiles.api as headerfiles +# Eventually we will use headerfiles as an external library for Pypi installation. +# Now we use headerfiles as a module and want to see the performance difference first. +from headerfiles.headerfiles import api as headerfiles from data_prep import introspector from experiment import benchmark as benchmarklib @@ -13,6 +17,7 @@ COMPLEX_TYPES = ['const', 'enum', 'struct', 'union', 'volatile'] +HEADERFILES = bool(os.getenv('LLM_HEADERFILES', '')) class ContextRetriever: """Class to retrieve context from introspector for @@ -56,7 +61,7 @@ def _get_source_line(self, item: dict) -> int: def _get_source_file(self, item: dict) -> str: return self._get_nested_item(item, 'source', 'source_file') - def _get_files_to_include(self) -> list[str]: + def _infer_files_via_types(self) -> list[str]: """Retrieves files to include. These files are found from the source files for complex types seen in the function declaration.""" @@ -107,6 +112,19 @@ def _get_files_to_include(self) -> list[str]: return list(files) + def _get_files_to_include(self) -> list[str]: + if HEADERFILES: + proj_header_files = headerfiles.get_proj_headers(self._benchmark.project) + else: + proj_header_files = [] + type_based_files = self._infer_files_via_types() + + header_files = proj_header_files + for file in type_based_files: + if file not in header_files: + header_files.append(file) + return header_files + def _clean_type(self, type_name: str) -> str: """Cleans a type so that it can be fetched from FI.""" if not type_name: diff --git a/data_prep/project_src.py b/data_prep/project_src.py index 4cce93dee3..3e1e3576c6 100755 --- a/data_prep/project_src.py +++ b/data_prep/project_src.py @@ -245,7 +245,6 @@ def _copy_project_src_from_local(project: str, out: str, language: str): 'docker', 'run', '-d', - '--rm', '--shm-size=2g', '--platform', 'linux/amd64', @@ -286,7 +285,10 @@ def _copy_project_src_from_local(project: str, out: str, language: str): logger.error('Failed to run OSS-Fuzz image of %s:', project) logger.error('STDOUT: %s', result.stdout) logger.error('STDERR: %s', result.stderr) - raise Exception(f'Failed to run docker command: {" ".join(run_container)}') + # I silenced the following code to avoid the bug: "Docker: Error response from daemon: Conflict." + # Also, I deleted "-rm" in run_container to ensure that the container exists when copy_strc is executed. + # Otherwise, some projects like avahi can not be fully test. + #raise Exception(f'Failed to run docker command: {" ".join(run_container)}') try: copy_src = ['docker', 'cp', f'{project}-container:/src', out] diff --git a/experiment/builder_runner.py b/experiment/builder_runner.py index 5be1b842d2..3eebbcd11d 100644 --- a/experiment/builder_runner.py +++ b/experiment/builder_runner.py @@ -121,6 +121,8 @@ def __init__(self, def _libfuzzer_args(self) -> list[str]: return [ '-print_final_stats=1', + # We intentionally set it to 0 to speed up our testing for headerfiles. + '-runs=0', f'-max_total_time={self.run_timeout}', # Without this flag, libFuzzer only consider short inputs in short # experiments, which lowers the coverage for quick performance tests. diff --git a/experiment/evaluator.py b/experiment/evaluator.py index dd0bc4ccb7..242fa0a835 100644 --- a/experiment/evaluator.py +++ b/experiment/evaluator.py @@ -24,6 +24,11 @@ from google.cloud import storage +# import headerfiles.api as headerfiles +# Eventually we will use headerfiles as an external library for Pypi installation. +# Now we use headerfiles as a module and want to see the performance difference first. +from headerfiles.headerfiles import api as headerfiles + from experiment import builder_runner, oss_fuzz_checkout, textcov from experiment.benchmark import Benchmark from experiment.builder_runner import BuildResult, RunResult @@ -34,8 +39,9 @@ logger = logging.getLogger(__name__) -LLM_FIX_LIMIT = int(os.getenv('LLM_FIX_LIMIT', '5')) +LLM_FIX_LIMIT = int(os.getenv('LLM_FIX_LIMIT', '0')) GENERATE_CORPUS = bool(os.getenv('LLM_GENERATE_CORPUS', '')) +HEADERFILES = bool(os.getenv('LLM_HEADERFILES', '')) OSS_FUZZ_COVERAGE_BUCKET = 'oss-fuzz-coverage' OSS_FUZZ_INTROSPECTOR_BUCKET = 'oss-fuzz-introspector' @@ -305,6 +311,26 @@ def triage_crash( dual_logger.log(f'Warning: no crash info in {generated_oss_fuzz_project}.') return TriageResult.NOT_APPLICABLE + def update_build_with_headerfiles_installation(self, generated_oss_fuzz_project): + """Updates the build script with header files installation & include logic""" + generated_project_path = os.path.join(oss_fuzz_checkout.OSS_FUZZ_DIR, + 'projects', + generated_oss_fuzz_project) + updated_build_script = headerfiles.get_build_script(self.benchmark.project, "/build_install_dir") + with open(os.path.join(generated_project_path, 'update_build_script.tmp'), 'w') as file: + file.write(updated_build_script) + + # Generate the command to insert the updated script at the beginning of build.sh + docker_command = f""" + COPY update_build_script.tmp $SRC/update_build_script.tmp + RUN cat $SRC/update_build_script.tmp $SRC/build.sh > $SRC/build.sh.tmp && \ + mv $SRC/build.sh.tmp $SRC/build.sh && \ + rm $SRC/update_build_script.tmp + """ + + with open(os.path.join(generated_project_path, 'Dockerfile'), 'a') as file: + file.write(docker_command) + def extend_build_with_corpus(self, ai_binary, target_path, generated_oss_fuzz_project): """Extends an OSS-Fuzz project with corpus generated programmatically.""" @@ -350,6 +376,9 @@ def check_target(self, ai_binary, target_path: str) -> Result: # TODO: Log build failure. # TODO: Log run success/failure. + if HEADERFILES: + self.update_build_with_headerfiles_installation(generated_oss_fuzz_project) + if GENERATE_CORPUS: self.extend_build_with_corpus(ai_binary, target_path, generated_oss_fuzz_project) diff --git a/headerfiles/.gitignore b/headerfiles/.gitignore new file mode 100644 index 0000000000..9e34841361 --- /dev/null +++ b/headerfiles/.gitignore @@ -0,0 +1,27 @@ +__pycache__ +*.pyc +*.swp +venv + +# egg-info +*.egg-info/ + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST diff --git a/headerfiles/DEV.md b/headerfiles/DEV.md new file mode 100644 index 0000000000..9e84eec4dd --- /dev/null +++ b/headerfiles/DEV.md @@ -0,0 +1,13 @@ +# Dev Usage + +```bash +python3 -m venv venv +source venv/bin/activate +pip install -e .[dev] +headerfiles-cli --help +#... +headerfiles-cli supp libpsl +headerfiles-cli infer libpsl +#... +pip uninstall headerfiles -y +``` diff --git a/headerfiles/LICENSE b/headerfiles/LICENSE new file mode 100644 index 0000000000..7a4a3ea242 --- /dev/null +++ b/headerfiles/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/headerfiles/MANIFEST.in b/headerfiles/MANIFEST.in new file mode 100644 index 0000000000..57ea1dd152 --- /dev/null +++ b/headerfiles/MANIFEST.in @@ -0,0 +1,5 @@ +include README.md +include LICENSE +include setup.py +graft headerfiles +prune tests \ No newline at end of file diff --git a/headerfiles/README.md b/headerfiles/README.md new file mode 100644 index 0000000000..8b7d6faebf --- /dev/null +++ b/headerfiles/README.md @@ -0,0 +1,83 @@ +# headerfiles +Header file inference tool for LLM-based fuzz driver generation to OSS-Fuzz projects. Currently, this project is for [OSS-Fuzz-Gen](https://github.com/google/oss-fuzz-gen) usage purpose and will be more general later. + +# API + +There are three APIs: + +``` +headerfiles.api + +- is_supported_proj + - Usage: Check if a projection is supported by the API. + - Return value: True if the projection is supported, False otherwise. + +- get_proj_headers + - Usage: Get the inferred headers for a specific project. + - Return value: A list of inferred headers for the project, their orders also matter. + +- get_build_script + - Usage: Get the build script for a specific project supported in OSS-FUZZ. + - Return value: The build script for the project. + +``` + +# Support List (50 projects till now) + +- [x] avahi +- [x] bind9 +- [x] bluez +- [x] brotli +- [x] capstone +- [x] coturn +- [x] croaring +- [x] igraph +- [x] kamailio +- [x] krb5 +- [x] lcms +- [x] libbpf +- [x] libcoap +- [x] libevent +- [x] libfido2 +- [x] libical +- [x] libjpeg-turbo +- [x] libpcap +- [x] librdkafka +- [x] libsndfile +- [x] libsodium +- [x] libssh +- [x] libssh2 +- [x] libtpms +- [x] libusb +- [x] libvnc +- [x] libxls +- [x] libyang +- [x] lwan +- [x] mbedtls +- [x] mdbtools +- [x] minizip +- [x] ndpi +- [x] njs +- [x] oniguruma +- [x] openexr +- [x] opusfile +- [x] picotls +- [x] pjsip +- [x] proftpd +- [x] pupnp +- [x] sleuthkit +- [x] tidy-html5 +- [x] unicorn +- [x] unit +- [x] utf8proc +- [x] vlc +- [x] w3m +- [x] wasm3 +- [x] zydis + + +# Test + +```bash +python3 -m tests.test_api +``` diff --git a/headerfiles/__init__.py b/headerfiles/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/headerfiles/headerfiles/__init__.py b/headerfiles/headerfiles/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/headerfiles/headerfiles/api.py b/headerfiles/headerfiles/api.py new file mode 100644 index 0000000000..f65e926cd2 --- /dev/null +++ b/headerfiles/headerfiles/api.py @@ -0,0 +1,84 @@ +import json +from importlib import resources +import os + +loaded = False +headerjson = None + +def __load_headerfiles(): + global loaded, headerjson + try: + #with resources.open_text('headerfiles.data', "headerfiles.json") as f: + # 获取当前脚本文件的目录 + current_dir = os.path.dirname(os.path.abspath(__file__)) + + # 构造 data 目录下 headerfiles.json 文件的完整路径 + file_path = os.path.join(current_dir, 'data', 'headerfiles.json') + + # 打开并加载 JSON 文件 + with open(file_path, 'r', encoding='utf-8') as f: + headerjson = json.load(f) + + except FileNotFoundError: + print("ERROR: headerfiles.json not found") + headerjson = {} + loaded = True + +def is_supported_proj(proj: str) -> bool: + """ + API function `is_supported_proj` + - Usage: Check if a projection is supported by the API. + - Return value: True if the projection is supported, False otherwise. + """ + global loaded, headerjson + if not loaded: + __load_headerfiles() + return set(headerjson.keys()) + +def get_proj_headers(proj: str) -> list[str]: + """ + API function `get_proj_headers` + - Usage: Get the inferred headers for a specific project. + - Return value: A list of inferred headers for the project, their orders also matter. + """ + global loaded, headerjson + if not loaded: + __load_headerfiles() + if proj not in headerjson: + return [] + return headerjson[proj]["headers"] + +def get_build_script(proj: str, install_dir: str) -> str: + """ + API function `get_build_script` + - Usage: Get the build script for a specific project supported in OSS-FUZZ. + - Return value: The build script for the project. + """ + global loaded, headerjson + if not loaded: + __load_headerfiles() + + script = [ "# Begin of build script from headerfiles" ] + script.append(f"export HEADERFILES_CUSTOM_INSTALL_DIR=\"{install_dir}\"") + if proj in headerjson: + script.append(f"mkdir -p {install_dir}/include") + script.append(f"mkdir -p {install_dir}/lib") + + # Initialize variables to avoid "unbound variable" errors + script.append("export CFLAGS=\"${CFLAGS:-}\"") + script.append("export CXXFLAGS=\"${CXXFLAGS:-}\"") + script.append("export LDFLAGS=\"${LDFLAGS:-}\"") + + # Append new flags to existing ones if they are already set + script.append(f"export CFLAGS=\"$CFLAGS -I{install_dir}/include\"") + script.append(f"export CXXFLAGS=\"$CXXFLAGS -I{install_dir}/include\"") + script.append(f"export LDFLAGS=\"$LDFLAGS -L{install_dir}/lib\"") + + # script.append(f"export CFLAGS=\" -I{install_dir}/include\" ") + # script.append(f"export CXXFLAGS=\" -I{install_dir}/include\" ") + # script.append(f"export LDFLAGS=\" -I{install_dir}/lib\" ") + + script.extend(headerjson[proj].get("build", [])) + script.append("# End of build script from headerfiles") + + return "\n".join(script) + "\n" diff --git a/headerfiles/headerfiles/cli.py b/headerfiles/headerfiles/cli.py new file mode 100644 index 0000000000..cdbdad6a1e --- /dev/null +++ b/headerfiles/headerfiles/cli.py @@ -0,0 +1,28 @@ +import click +import json + +from .api import is_supported_proj, get_proj_headers + +@click.group() +def cli(): + pass + +@click.command(name='is_supported_proj') +@click.argument('proj') +def command_is_supported_proj(proj: str): + """Command for is_supported_proj API""" + result = is_supported_proj(proj) + click.echo(f"{result}") + +@click.command(name='get_proj_headers') +@click.argument('proj') +def command_get_proj_headers(proj: str): + """Command for get_proj_headers API""" + result = get_proj_headers(proj) + click.echo(json.dumps(result, indent=2)) + +cli.add_command(command_is_supported_proj, name='supp') +cli.add_command(command_get_proj_headers, name='infer') + +if __name__ == "__main__": + cli() diff --git a/headerfiles/headerfiles/data/headerfiles.json b/headerfiles/headerfiles/data/headerfiles.json new file mode 100644 index 0000000000..ce59189109 --- /dev/null +++ b/headerfiles/headerfiles/data/headerfiles.json @@ -0,0 +1,1938 @@ +{ + "avahi": { + "headers": [ + "assert.h", + "sys/socket.h", + "avahi-common/address.h", + "avahi-common/error.h", + "avahi-common/simple-watch.h", + "avahi-core/core.h", + "avahi-core/publish.h", + "avahi-common/alternative.h", + "avahi-common/gccmacro.h", + "avahi-common/strlst.h", + "avahi-core/dns.h", + "avahi-core/rr.h", + "avahi-common/cdecl.h", + "avahi-common/llist.h", + "avahi-common/thread-watch.h", + "avahi-core/hashmap.h", + "avahi-common/defs.h", + "avahi-common/malloc.h", + "avahi-common/timeval.h", + "avahi-core/log.h", + "avahi-common/domain.h", + "avahi-common/rlist.h", + "avahi-common/watch.h", + "avahi-core/lookup.h" + ], + "build": [ + "#!/bin/bash", + "", + "set -eux", + "", + "# Default flags for compilation", + "flags=\"-O1 -fno-omit-frame-pointer -g -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=address,undefined\"", + "", + "export CC=${CC:-clang}", + "export CFLAGS=${CFLAGS:-$flags}", + "", + "export CXX=${CXX:-clang++}", + "export CXXFLAGS=${CXXFLAGS:-$flags}", + "", + "# Navigate to the Avahi project root directory", + "cd $SRC/avahi", + "", + "# Update package lists and install dependencies", + "apt-get update", + "apt-get install -y autoconf gettext libtool m4 automake pkg-config libexpat-dev", + "", + "# Additional dependencies for i386 architecture", + "if [[ \"$ARCHITECTURE\" == i386 ]]; then", + " apt-get install -y libexpat-dev:i386", + "fi", + "", + "# Additional undefined behavior sanitizer checks", + "if [[ \"$SANITIZER\" == undefined ]]; then", + " additional_ubsan_checks=pointer-overflow,alignment", + " UBSAN_FLAGS=\"-fsanitize=$additional_ubsan_checks -fno-sanitize-recover=$additional_ubsan_checks\"", + " CFLAGS=\"$CFLAGS $UBSAN_FLAGS\"", + " CXXFLAGS=\"$CXXFLAGS $UBSAN_FLAGS\"", + "fi", + "", + "# Disable consistency checks in pthread configuration", + "sed -i 's/check_inconsistencies=yes/check_inconsistencies=no/' common/acx_pthread.m4", + "", + "# Generate configuration scripts and configure the project", + "if ! ./autogen.sh \\", + " --disable-stack-protector --disable-qt3 --disable-qt4 --disable-qt5 --disable-gtk \\", + " --disable-gtk3 --disable-dbus --disable-gdbm --disable-libdaemon --disable-python \\", + " --disable-manpages --disable-mono --disable-monodoc --disable-glib --disable-gobject \\", + " --disable-libevent --disable-libsystemd \\", + " --prefix=\"$HEADERFILES_CUSTOM_INSTALL_DIR\"; then", + " cat config.log", + " exit 1", + "fi", + "", + "# Compile the project using all available processors", + "make V=1", + "", + "# Install the compiled project to the custom install directory", + "make install", + "", + "make clean", + "cd -", + "# The header files and libraries should now be installed in ${HEADERFILES_CUSTOM_INSTALL_DIR}", + "echo \"Avahi has been installed to ${HEADERFILES_CUSTOM_INSTALL_DIR}\"" + ] + }, + "bind9": { + "headers": [ + "dns/acl.h", + "dns/adb.h", + "dns/badcache.h", + "dns/bit.h", + "dns/byaddr.h", + "dns/cache.h", + "dns/callbacks.h", + "dns/catz.h", + "dns/cert.h", + "dns/client.h", + "dns/clientinfo.h", + "dns/compress.h", + "dns/db.h", + "dns/dbiterator.h", + "dns/diff.h", + "dns/dispatch.h", + "dns/dlz.h", + "dns/dlz_dlopen.h", + "dns/dns64.h", + "dns/dnssec.h", + "dns/dnstap.h", + "dns/ds.h", + "dns/dsdigest.h", + "dns/dyndb.h", + "dns/ecs.h", + "dns/edns.h", + "dns/fixedname.h", + "dns/forward.h", + "dns/geoip.h", + "dns/ipkeylist.h", + "dns/iptable.h", + "dns/journal.h", + "dns/kasp.h", + "dns/keydata.h", + "dns/keyflags.h", + "dns/keymgr.h", + "dns/keystore.h", + "dns/keytable.h", + "dns/keyvalues.h", + "dns/master.h", + "dns/masterdump.h", + "dns/message.h", + "dns/name.h", + "dns/nametree.h", + "dns/ncache.h", + "dns/nsec.h", + "dns/nsec3.h", + "dns/nta.h", + "dns/opcode.h", + "dns/order.h", + "dns/peer.h", + "dns/private.h", + "dns/qp.h", + "dns/rbt.h", + "dns/rcode.h", + "dns/rdata.h", + "dns/rdataclass.h", + "dns/rdatalist.h", + "dns/rdataset.h", + "dns/rdatasetiter.h", + "dns/rdataslab.h", + "dns/rdatatype.h", + "dns/remote.h", + "dns/request.h", + "dns/resolver.h", + "dns/result.h", + "dns/rootns.h", + "dns/rpz.h", + "dns/rriterator.h", + "dns/rrl.h", + "dns/sdlz.h", + "dns/secalg.h", + "dns/secproto.h", + "dns/skr.h", + "dns/soa.h", + "dns/ssu.h", + "dns/stats.h", + "dns/time.h", + "dns/tkey.h", + "dns/trace.h", + "dns/transport.h", + "dns/tsig.h", + "dns/ttl.h", + "dns/types.h", + "dns/update.h", + "dns/validator.h", + "dns/view.h", + "dns/xfrin.h", + "dns/zone.h", + "dns/zonekey.h", + "dns/zoneverify.h", + "dns/zt.h", + "dst/dst.h", + "dst/gssapi.h", + "irs/resconf.h", + "isc/ascii.h", + "isc/assertions.h", + "isc/async.h", + "isc/atomic.h", + "isc/attributes.h", + "isc/backtrace.h", + "isc/barrier.h", + "isc/base32.h", + "isc/base64.h", + "isc/buffer.h", + "isc/commandline.h", + "isc/condition.h", + "isc/counter.h", + "isc/dir.h", + "isc/dnsstream.h", + "isc/endian.h", + "isc/entropy.h", + "isc/errno.h", + "isc/error.h", + "isc/file.h", + "isc/fips.h", + "isc/formatcheck.h", + "isc/fuzz.h", + "isc/getaddresses.h", + "isc/hash.h", + "isc/hashmap.h", + "isc/heap.h", + "isc/helper.h", + "isc/hex.h", + "isc/histo.h", + "isc/hmac.h", + "isc/ht.h", + "isc/httpd.h", + "isc/interfaceiter.h", + "isc/iterated_hash.h", + "isc/job.h", + "isc/lang.h", + "isc/lex.h", + "isc/list.h", + "isc/log.h", + "isc/loop.h", + "isc/magic.h", + "isc/managers.h", + "isc/md.h", + "isc/mem.h", + "isc/meminfo.h", + "isc/mutex.h", + "isc/mutexblock.h", + "isc/net.h", + "isc/netaddr.h", + "isc/netmgr.h", + "isc/netscope.h", + "isc/nonce.h", + "isc/once.h", + "isc/os.h", + "isc/overflow.h", + "isc/parseint.h", + "isc/pause.h", + "isc/portset.h", + "isc/proxy2.h", + "isc/queue.h", + "isc/quota.h", + "isc/radix.h", + "isc/random.h", + "isc/ratelimiter.h", + "isc/refcount.h", + "isc/regex.h", + "isc/region.h", + "isc/result.h", + "isc/rwlock.h", + "isc/safe.h", + "isc/serial.h", + "isc/signal.h", + "isc/siphash.h", + "isc/sockaddr.h", + "isc/spinlock.h", + "isc/stats.h", + "isc/stdio.h", + "isc/stdtime.h", + "isc/strerr.h", + "isc/string.h", + "isc/symtab.h", + "isc/syslog.h", + "isc/thread.h", + "isc/tid.h", + "isc/time.h", + "isc/timer.h", + "isc/tls.h", + "isc/tm.h", + "isc/types.h", + "isc/urcu.h", + "isc/url.h", + "isc/utf8.h", + "isc/util.h", + "isc/uv.h", + "isc/work.h", + "isc/xml.h" + ], + "build": [ + "cd /src/bind9", + "autoreconf -fi", + "./configure --disable-shared --enable-static --enable-developer --without-cmocka --without-zlib --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} --enable-fuzzing=ossfuzz", + "make -C lib/isc", + "make -C lib/dns", + "make -C tests/libtest", + "make -C lib/isc install", + "make -C lib/dns install", + "make -C tests/libtest install", + "make -C lib/dns clean", + "make -C lib/isc clean", + "make -C tests/libtest clean", + "cd -" + ] + }, + "bluez": { + "headers": [ + "glib.h", + "bluetooth/bluetooth.h", + "bluetooth/bnep.h", + "bluetooth/cmtp.h", + "bluetooth/hci.h", + "bluetooth/hci_lib.h", + "bluetooth/hidp.h", + "bluetooth/l2cap.h", + "bluetooth/rfcomm.h", + "bluetooth/sco.h", + "bluetooth/sdp.h", + "bluetooth/sdp_lib.h", + "bluetooth/uuid.h", + "gobex/gobex-apparam.h", + "gobex/gobex-debug.h", + "gobex/gobex-defs.h", + "gobex/gobex-header.h", + "gobex/gobex-packet.h", + "gobex/gobex.h", + "src/adapter.h", + "src/adv_monitor.h", + "src/advertising.h", + "src/agent.h", + "src/backtrace.h", + "src/battery.h", + "src/btd.h", + "src/dbus-common.h", + "src/device.h", + "src/eir.h", + "src/error.h", + "src/gatt-client.h", + "src/gatt-database.h", + "src/log.h", + "src/oui.h", + "src/plugin.h", + "src/profile.h", + "src/sdp-client.h", + "src/sdp-xml.h", + "src/sdpd.h", + "src/service.h", + "src/set.h", + "src/settings.h", + "src/storage.h", + "src/textfile.h", + "src/uuid-helper.h" + ], + "build": [ + "cd /src/bluez", + "autoreconf -fi", + "./configure --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} --enable-library", + "make install", + "make clean", + "cd -" + ] + }, + "brotli": { + "headers": [ + "brotli/decode.h", + "brotli/encode.h", + "brotli/port.h", + "brotli/shared_dictionary.h", + "brotli/types.h" + ], + "build": [ + "cd /src/brotli", + "cmake . -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=OFF --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make -j$(nproc) brotlidec", + "make -j$(nproc) install", + "make clean", + "cd -" + ] + }, + "capstone": { + "headers": [ + "capstone/capstone.h" + ], + "build": [ + "cd /src/capstonenext", + "mkdir build1", + "cd build1", + "cmake -DCAPSTONE_BUILD_SHARED=0 --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} ..", + "make -j$(nproc) install", + "make clean" + ] + }, + "coturn": { + "headers": [ + "stdio.h", + "string.h", + "stdlib.h", + "fcntl.h", + "apputils.h", + "ns_turn_utils.h", + "stun_buffer.h", + "ns_turn_server.h", + "ns_turn_msg_addr.h" + ], + "build": [ + "mkdir -p /src/coturn/my_build", + "cd /src/coturn/my_build", + "cmake -DFUZZER=ON -DLIB_FUZZING_ENGINE=\"$LIB_FUZZING_ENGINE\" -DCMAKE_EXE_LINKER_FLAGS=\"-Wl,-rpath,'\\$ORIGIN/lib'\" -DWITH_MYSQL=OFF -Wno-dev --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} ../.", + "make install", + "make clean", + "cd -", + "rm -rf /src/coturn/my_build", + "export CFLAGS=\"${CFLAGS} -I${HEADERFILES_CUSTOM_INSTALL_DIR}/include/turn -I${HEADERFILES_CUSTOM_INSTALL_DIR}/include/turn/client -I${HEADERFILES_CUSTOM_INSTALL_DIR}/include/turn/server \"" + ] + }, + "croaring": { + "headers": [ + "stdarg.h", + "stddef.h", + "setjmp.h", + "assert.h" + ], + "build": [ + "mkdir build-dir && cd build-dir", + "cmake -DENABLE_ROARING_TESTS=OFF --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} ..", + "make -j$(nproc)", + "make install", + "make clean", + "cd ..", + "rm -rf build-dir" + ] + }, + "dovecot": { + "headers": [ + "stdbool.h" + ], + "build": [ + "./autogen.sh", + "./configure PANDOC=false --with-fuzzer=clang --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make install", + "make clean" + ] + }, + "igraph": { + "headers": [ + "igraph/igraph.h" + ], + "build": [ + "mkdir -p /src/igraph/build", + "cd /src/igraph/build", + "cmake .. -DIGRAPH_WARNINGS_AS_ERRORS=OFF -DCMAKE_BUILD_TYPE=None -DCMAKE_PREFIX_PATH=$DEPS_PATH -DFLEX_KEEP_LINE_NUMBERS=ON --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make install", + "make clean", + "cd -" + ] + }, + "inchi": { + "headers": [ + "ichi.h", + "inchi_api.h", + "inchi_gui.h", + "inchicmp.h", + "ichi_bns.h", + "ichi_io.h", + "ichicano.h", + "ichicant.h", + "ichicomn.h", + "ichicomp.h", + "ichidrp.h", + "ichierr.h", + "ichimain.h", + "ichimake.h", + "ichinorm.h", + "ichiring.h", + "ichirvrs.h", + "ichisize.h", + "ichister.h", + "ichitaut.h", + "ichitime.h", + "ikey_base26.h", + "extr_ct.h", + "incomdef.h", + "inpdef.h", + "ixa.h", + "mode.h", + "mol_fmt.h", + "readinch.h", + "sha2.h", + "strutil.h", + "util.h", + "ixa_mol.h", + "ixa_status.h", + "inchi_dll.h", + "inchi_dll_a.h", + "inchi_dll_b.h", + "inchi_dll_main.h" + ], + "build": [] + }, + "kamailio": { + "headers": [ + "hf.h", + "keys.h", + "msg_parser.h", + "parse_addr_spec.h", + "parse_allow.h", + "parse_body.h", + "parse_content.h", + "parse_cseq.h", + "parse_date.h", + "parse_def.h", + "parse_disposition.h", + "parse_diversion.h", + "parse_event.h", + "parse_expires.h", + "parse_fline.h", + "parse_from.h", + "parse_hname2.h", + "parse_identity.h", + "parse_identityinfo.h", + "parse_methods.h", + "parse_nameaddr.h", + "parse_option_tags.h", + "parse_param.h", + "parse_ppi_pai.h", + "parse_privacy.h", + "parse_refer_to.h", + "parse_require.h", + "parse_retry_after.h", + "parse_rpid.h", + "parse_rr.h", + "parse_sipifmatch.h", + "parse_subscription_state.h", + "parse_supported.h", + "parse_to.h", + "parse_uri.h", + "parse_via.h", + "parser_f.h" + ], + "build": [] + }, + "krb5": { + "headers": [ + "com_err.h", + "kdb.h", + "krad.h", + "krb5.h", + "profile.h", + "verto-module.h", + "verto.h", + "gssapi.h", + "gssapi/gssapi.h", + "gssapi/gssapi_alloc.h", + "gssapi/gssapi_ext.h", + "gssapi/gssapi_generic.h", + "gssapi/gssapi_krb5.h", + "gssapi/mechglue.h", + "gssrpc/types.h", + "gssrpc/auth.h", + "gssrpc/auth_gss.h", + "gssrpc/auth_gssapi.h", + "gssrpc/auth_unix.h", + "gssrpc/clnt.h", + "gssrpc/netdb.h", + "gssrpc/pmap_clnt.h", + "gssrpc/pmap_prot.h", + "gssrpc/pmap_rmt.h", + "gssrpc/rename.h", + "gssrpc/rpc.h", + "gssrpc/rpc_msg.h", + "gssrpc/svc.h", + "gssrpc/svc_auth.h", + "gssrpc/xdr.h", + "kadm5/admin.h", + "kadm5/chpass_util_strings.h", + "kadm5/kadm_err.h", + "krb5/krb5.h", + "krb5/ccselect_plugin.h", + "krb5/certauth_plugin.h", + "krb5/clpreauth_plugin.h", + "krb5/hostrealm_plugin.h", + "krb5/kadm5_auth_plugin.h", + "krb5/kadm5_hook_plugin.h", + "krb5/kdcpolicy_plugin.h", + "krb5/kdcpreauth_plugin.h", + "krb5/localauth_plugin.h", + "krb5/locate_plugin.h", + "krb5/plugin.h", + "krb5/preauth_plugin.h", + "krb5/pwqual_plugin.h" + ], + "build": [ + "pushd src/", + "autoreconf", + "./configure CFLAGS=\"-fcommon $CFLAGS\" CXXFLAGS=\"-fcommon $CXXFLAGS\" --enable-static --disable-shared --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make", + "make install", + "make clean", + "popd" + ] + }, + "lcms": { + "headers": [ + "lcms2.h" + ], + "build": [ + "cd /src/lcms", + "./configure --enable-shared=no --enable-static --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make install", + "make clean", + "cd -" + ] + }, + "libarchive": { + "headers": [ + "assert.h", + "archive.h", + "archive_entry.h" + ], + "build": [ + "cd $SRC/libarchive", + "mkdir build3", + "cd build3", + "cmake -DCHECK_CRC_ON_SOLID_SKIP=1 -DDONT_FAIL_ON_CRC_ERROR=1 --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} ../", + "make install", + "make clean", + "cd -" + ] + }, + "libbpf": { + "headers": [ + "errno.h", + "linux/types.h", + "stdbool.h", + "bpf/bpf.h", + "bpf/btf.h", + "bpf/libbpf.h", + "bpf/bpf_endian.h", + "bpf/libbpf_common.h", + "bpf/libbpf_legacy.h", + "bpf/libbpf_version.h", + "bpf/skel_internal.h" + ], + "build": [ + "set -eux", + "export CFLAGS=\"${CFLAGS} -I${HEADERFILES_CUSTOM_INSTALL_DIR}/usr/include \"", + "export CXXFLAGS=\"${CXXFLAGS} -I${HEADERFILES_CUSTOM_INSTALL_DIR}/usr/include \"", + "export LDFLAGS=\"${LDFLAGS} -L${HEADERFILES_CUSTOM_INSTALL_DIR}/usr/lib64 -lbpf \"", + "SANITIZER=${SANITIZER:-address}", + "flags=\"-O1 -fno-omit-frame-pointer -g -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=$SANITIZER -fsanitize=fuzzer-no-link\"", + "export CC=${CC:-clang}", + "export CFLAGS=${CFLAGS:-$flags}", + "export CXX=${CXX:-clang++}", + "export CXXFLAGS=${CXXFLAGS:-$flags}", + "pushd $SRC/libbpf", + "export OUT=${OUT:-\"$(pwd)/out\"}", + "mkdir -p \"$OUT\"", + "export LIB_FUZZING_ENGINE=${LIB_FUZZING_ENGINE:--fsanitize=fuzzer}", + "# libelf is compiled with _FORTIFY_SOURCE by default and it", + "# isn't compatible with MSan. It was borrowed", + "# from https://github.com/google/oss-fuzz/pull/7422", + "if [[ \"$SANITIZER\" == memory ]]; then", + " CFLAGS+=\" -U_FORTIFY_SOURCE\"", + " CXXFLAGS+=\" -U_FORTIFY_SOURCE\"", + "fi", + "# The alignment check is turned off by default on OSS-Fuzz/CFLite so it should be", + "# turned on explicitly there. It was borrowed from", + "# https://github.com/google/oss-fuzz/pull/7092", + "if [[ \"$SANITIZER\" == undefined ]]; then", + " additional_ubsan_checks=alignment", + " UBSAN_FLAGS=\"-fsanitize=$additional_ubsan_checks -fno-sanitize-recover=$additional_ubsan_checks\"", + " CFLAGS+=\" $UBSAN_FLAGS\"", + " CXXFLAGS+=\" $UBSAN_FLAGS\"", + "fi", + "# Ideally libbelf should be built using release tarballs available", + "# at https://sourceware.org/elfutils/ftp/. Unfortunately sometimes they", + "# fail to compile (for example, elfutils-0.185 fails to compile with LDFLAGS enabled", + "# due to https://bugs.gentoo.org/794601) so let's just point the script to", + "# commits referring to versions of libelf that actually can be built", + "rm -rf elfutils", + "git clone https://sourceware.org/git/elfutils.git", + "(", + "cd elfutils", + "git checkout 67a187d4c1790058fc7fd218317851cb68bb087c", + "git log --oneline -1", + "# ASan isn't compatible with -Wl,--no-undefined: https://github.com/google/sanitizers/issues/380", + "sed -i 's/^\\(NO_UNDEFINED=\\).*/\\1/' configure.ac", + "# ASan isn't compatible with -Wl,-z,defs either:", + "# https://clang.llvm.org/docs/AddressSanitizer.html#usage", + "sed -i 's/^\\(ZDEFS_LDFLAGS=\\).*/\\1/' configure.ac", + "if [[ \"$SANITIZER\" == undefined ]]; then", + " # That's basicaly what --enable-sanitize-undefined does to turn off unaligned access", + " # elfutils heavily relies on on i386/x86_64 but without changing compiler flags along the way", + " sed -i 's/\\(check_undefined_val\\)=[0-9]/\\1=1/' configure.ac", + "fi", + "autoreconf -i -f", + "if ! ./configure --enable-maintainer-mode --disable-debuginfod --disable-libdebuginfod \\", + " --disable-demangler --without-bzlib --without-lzma --without-zstd \\", + " CC=\"$CC\" CFLAGS=\"-Wno-error $CFLAGS\" CXX=\"$CXX\" CXXFLAGS=\"-Wno-error $CXXFLAGS\" LDFLAGS=\"$CFLAGS\"; then", + " cat config.log", + " exit 1", + "fi", + "make -C config -j$(nproc) V=1", + "make -C lib -j$(nproc) V=1", + "make -C libelf -j$(nproc) V=1", + "make -C config -j$(nproc) V=1 install", + "make -C lib -j$(nproc) V=1 install", + "make -C libelf -j$(nproc) V=1 install", + ")", + "make -C src BUILD_STATIC_ONLY=y V=1 clean", + "make -C src -j$(nproc) CFLAGS=\"-I$(pwd)/elfutils/libelf $CFLAGS\" BUILD_STATIC_ONLY=y V=1 OBJDIR=/src/libbpf/jarvis-build DESTDIR=${HEADERFILES_CUSTOM_INSTALL_DIR} install", + "make -C src clean", + "(", + "cd elfutils", + "make -C config -j$(nproc) V=1 clean", + "make -C lib -j$(nproc) V=1 clean", + "make -C libelf -j$(nproc) V=1 clean", + ")", + "popd" + ] + }, + "libcbor": { + "headers": [ + "cbor.h" + ], + "build": [ + "mkdir -p /src/libcbor/nbuild", + "cd /src/libcbor/nbuild", + "cmake -D CMAKE_BUILD_TYPE=Debug -D CMAKE_INSTALL_PREFIX=${HEADERFILES_CUSTOM_INSTALL_DIR} -D SANITIZE=OFF ..", + "make ", + "make install", + "make clean", + "cd -" + ] + }, + "libcoap": { + "headers": [ + "coap3/coap.h" + ], + "build": [ + "export LDFLAGS=\"${LDFLAGS} -lpthread \"", + "pushd /src/libcoap", + "./autogen.sh", + "./configure --disable-doxygen --disable-manpages --disable-dtls --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make install", + "make clean", + "popd" + ] + }, + "libdwarf": { + "headers": [ + "fcntl.h" + ], + "build": [ + "mkdir -p /src/libdwarf/build", + "cd /src/libdwarf/build", + "cmake --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} ..", + "make install", + "make clean", + "cd -", + "rm -rf /src/libdwarf/build" + ] + }, + "libevent": { + "headers": [ + "event.h", + "evdns.h", + "event2/dns.h", + "evhttp.h", + "evrpc.h", + "evutil.h", + "event2/buffer.h", + "event2/dns_compat.h", + "event2/http.h", + "event2/rpc_compat.h", + "event2/visibility.h", + "event2/buffer_compat.h", + "event2/dns_struct.h", + "event2/http_compat.h", + "event2/rpc_struct.h", + "event2/watch.h", + "event2/bufferevent.h", + "event2/event-config.h", + "event2/http_struct.h", + "event2/tag.h", + "event2/ws.h", + "event2/bufferevent_compat.h", + "event2/event.h", + "event2/keyvalq_struct.h", + "event2/tag_compat.h", + "event2/bufferevent_struct.h", + "event2/event_compat.h", + "event2/listener.h", + "event2/thread.h", + "event2/event_struct.h", + "event2/rpc.h", + "event2/util.h" + ], + "build": [ + "mkdir -p /src/libevent/build1", + "cd /src/libevent/build1", + "cmake -DEVENT__DISABLE_MBEDTLS=ON \\", + " -DEVENT__DISABLE_OPENSSL=ON \\", + " -DEVENT__LIBRARY_TYPE=STATIC \\", + " -DEVENT__DISABLE_TESTS=ON \\", + " -DEVENT__DISABLE_SAMPLES=ON \\", + " --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} ../", + "make", + "make install", + "make clean", + "cd -" + ] + }, + "libexif": { + "headers": [ + "assert.h", + "libexif/exif-data-type.h", + "libexif/exif-format.h", + "libexif/exif-log.h", + "libexif/exif-tag.h", + "libexif/exif-byte-order.h", + "libexif/exif-data.h", + "libexif/exif-ifd.h", + "libexif/exif-mem.h", + "libexif/exif-utils.h", + "libexif/exif-content.h", + "libexif/exif-entry.h", + "libexif/exif-loader.h", + "libexif/exif-mnote-data.h" + ], + "build": [] + }, + "libfido2": { + "headers": [ + "cbor.h", + "zconf.h", + "zlib.h", + "fido.h" + ], + "build": [] + }, + "libfuse": { + "headers": [ + "fuse.h", + "fuse_lowlevel.h", + "fuse_i.h", + "fuse_misc.h", + "fuse_kernel.h", + "mount_util.h", + "fuse_mount_compat.h", + "cuse_lowlevel.h" + ], + "build": [] + }, + "libgd": { + "headers": [ + "gd.h", + "gd_color_map.h", + "gd_errors.h", + "gd_io.h", + "gdcache.h", + "gdfontg.h", + "gdfontl.h", + "gdfontmb.h", + "gdfonts.h", + "gdfontt.h", + "gdfx.h", + "gdpp.h" + ], + "build": [] + }, + "libical": { + "headers": [ + "libical/ical.h", + "libical/icalarray.h", + "libical/icalattach.h", + "libical/icalcalendar.h", + "libical/icalclassify.h", + "libical/icalcluster.h", + "libical/icalcomponent.h", + "libical/icalderivedparameter.h", + "libical/icalderivedproperty.h", + "libical/icalderivedvalue.h", + "libical/icaldirset.h", + "libical/icaldirsetimpl.h", + "libical/icalduration.h", + "libical/icalenums.h", + "libical/icalerror.h", + "libical/icalfileset.h", + "libical/icalfilesetimpl.h", + "libical/icalgauge.h", + "libical/icalgaugeimpl.h", + "libical/icallangbind.h", + "libical/icalmemory.h", + "libical/icalmessage.h", + "libical/icalmime.h", + "libical/icalparameter.h", + "libical/icalparser.h", + "libical/icalperiod.h", + "libical/icalproperty.h", + "libical/icalrecur.h", + "libical/icalrestriction.h", + "libical/icalset.h", + "libical/icalspanlist.h", + "libical/icalss.h", + "libical/icalssyacc.h", + "libical/icaltime.h", + "libical/icaltimezone.h", + "libical/icaltypes.h", + "libical/icaltz-util.h", + "libical/icalvcal.h", + "libical/libical_ical_export.h", + "libical/libical_icalss_export.h", + "libical/libical_vcal_export.h", + "libical/pvl.h", + "libical/sspm.h", + "libical/vcaltmp.h", + "libical/vcc.h", + "libical/vobject.h" + ], + "build": [ + "cmake . -DSTATIC_ONLY=ON -DICAL_GLIB=False --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make install", + "make clean", + "cmake . -DSTATIC_ONLY=ON -DICAL_GLIB=False --install-prefix=/usr/local", + "make install", + "make clean" + ] + }, + "libjpeg-turbo": { + "headers": [ + + ], + "build": [ + "# build.sh have already done `make install`" + ] + }, + "libpcap": { + "headers": [ + "pcap-bpf.h", + "pcap-namedb.h", + "pcap.h" + ], + "build": [ + "mkdir -p /src/libpcap/build1", + "cd /src/libpcap/build1", + "cmake --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} ..", + "make install", + "make clean", + "cd -" + ] + }, + "librdkafka": { + "headers": [ + "rdkafka.h", + "regexp.h" + ], + "build": [ + "mkdir -p /src/librdkafka/build1", + "cd /src/librdkafka/build1", + "cmake --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} -DRDKAFKA_BUILD_STATIC=ON -DRDKAFKA_BUILD_EXAMPLES=OFF -DHAVE_REGEX=OFF ../", + "make install", + "make clean", + "cd -" + ] + }, + "libredwg": { + "headers": [ + "dwg.h", + "dwg_api.h" + ], + "build": [ + "cd $SRC/libredwg", + "sh autogen.sh", + "./configure --disable-shared --disable-bindings --enable-release --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make install", + "make clean", + "cd -" + ] + }, + "libressl": { + "headers": [ + "tls.h", + "openssl/aes.h", + "openssl/conf.h", + "openssl/engine.h", + "openssl/objects.h", + "openssl/rc4.h", + "openssl/tls1.h", + "openssl/asn1.h", + "openssl/conf_api.h", + "openssl/err.h", + "openssl/ocsp.h", + "openssl/ripemd.h", + "openssl/ts.h", + "openssl/asn1t.h", + "openssl/crypto.h", + "openssl/evp.h", + "openssl/opensslconf.h", + "openssl/rsa.h", + "openssl/txt_db.h", + "openssl/bio.h", + "openssl/ct.h", + "openssl/gost.h", + "openssl/opensslfeatures.h", + "openssl/safestack.h", + "openssl/ui.h", + "openssl/blowfish.h", + "openssl/curve25519.h", + "openssl/hkdf.h", + "openssl/opensslv.h", + "openssl/sha.h", + "openssl/ui_compat.h", + "openssl/bn.h", + "openssl/des.h", + "openssl/hmac.h", + "openssl/ossl_typ.h", + "openssl/sm3.h", + "openssl/whrlpool.h", + "openssl/buffer.h", + "openssl/dh.h", + "openssl/idea.h", + "openssl/pem.h", + "openssl/sm4.h", + "openssl/x509.h", + "openssl/camellia.h", + "openssl/dsa.h", + "openssl/kdf.h", + "openssl/pem2.h", + "openssl/srtp.h", + "openssl/x509_verify.h", + "openssl/cast.h", + "openssl/dso.h", + "openssl/lhash.h", + "openssl/pkcs12.h", + "openssl/ssl.h", + "openssl/x509_vfy.h", + "openssl/chacha.h", + "openssl/dtls1.h", + "openssl/md4.h", + "openssl/pkcs7.h", + "openssl/ssl2.h", + "openssl/x509v3.h", + "openssl/cmac.h", + "openssl/ec.h", + "openssl/md5.h", + "openssl/poly1305.h", + "openssl/ssl23.h", + "openssl/cms.h", + "openssl/ecdh.h", + "openssl/modes.h", + "openssl/rand.h", + "openssl/ssl3.h", + "openssl/comp.h", + "openssl/ecdsa.h", + "openssl/obj_mac.h", + "openssl/rc2.h", + "openssl/stack.h" + ], + "build": [ + "cd /src/libressl", + "cmake -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX \\", + " -DCMAKE_C_FLAGS=\"$CFLAGS\" -DCMAKE_CXX_FLAGS=\"$CXXFLAGS\" \\", + " $CMAKE_DEFINES --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} $SRC/libressl/", + "make install", + "make clean", + "cd -" + ] + }, + "libsndfile": { + "headers": [ + "sndfile.h" + ], + "build": [ + "apt-get update", + "apt-get -y install autoconf autogen automake libtool pkg-config python", + "cd $SRC/libsndfile", + "autoreconf -vif", + "./configure --disable-shared --enable-ossfuzzers --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make V=1 install", + "make distclean", + "cd -" + ] + }, + "libsodium": { + "headers": [ + "sodium.h" + ], + "build": [ + "cd /src/libsodium", + "./configure --enable-static LDFLAGS=\"$LDFLAGS $CXXFLAGS\" --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make install", + "make clean", + "cd -" + ] + }, + "libsrtp": { + "headers": [ + "srtp2/crypto_types.h", + "srtp2/auth.h", + "srtp2/cipher.h", + "srtp2/srtp.h" + ], + "build": [ + "cd /src/libsrtp", + "autoreconf -ivf", + "./configure --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make install", + "make clean", + "cd -" + ] + }, + "libssh": { + "headers": [ + "libssh/ssh2.h", + "libssh/libssh.h", + "libssh/server.h", + "libssh/sftp.h", + "libssh/callbacks.h" + ], + "build": [ + "export LDFLAGS=\"${LDFLAGS} -lpthread \"", + "mkdir -p /tmp/build", + "cd /tmp/build", + "cmake -DCMAKE_C_COMPILER=\"$CC\" -DCMAKE_CXX_COMPILER=\"$CXX\" \\", + " -DCMAKE_C_FLAGS=\"$CFLAGS\" -DCMAKE_CXX_FLAGS=\"$CXXFLAGS\" \\", + " -DBUILD_SHARED_LIBS=OFF -DWITH_INSECURE_NONE=ON\\", + " --install-prefix ${HEADERFILES_CUSTOM_INSTALL_DIR} $SRC/libssh", + "make", + "make install", + "make clean", + "cd -" + ] + }, + "libssh2": { + "headers": [ + "libssh2.h", + "libssh2_publickey.h", + "libssh2_sftp.h" + ], + "build": [ + "apt-get update", + "apt-get -y install automake libtool libssl-dev zlib1g-dev", + "autoreconf -fi", + "./configure --disable-shared --enable-ossfuzzers --disable-examples-build --enable-debug --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make", + "make install", + "make clean" + ] + }, + "libtasn1": { + "headers": [ + "libtasn1.h" + ], + "build": [] + }, + "libtpms": { + "headers": [ + "libtpms/tpm_error.h", + "libtpms/tpm_library.h", + "libtpms/tpm_memory.h", + "libtpms/tpm_nvfilename.h", + "libtpms/tpm_tis.h", + "libtpms/tpm_types.h" + ], + "build": [ + "cd /src/libtpms", + "autoreconf -vfi", + "./configure --disable-shared --enable-static --with-openssl --with-tpm2 --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make install", + "make distclean", + "cd -" + ] + }, + "libusb": { + "headers": [ + "assert.h", + "libusb/libusb.h" + ], + "build": [ + "cd /src/libusb", + "./autogen.sh", + "./configure --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make", + "make install", + "make clean", + "cd -" + ] + }, + "libvips": { + "headers": [ + "vips/vips.h" + ], + "build": [] + }, + "libvnc": { + "headers": [ + "rfb/rfb.h", + "rfb/rfbclient.h", + "rfb/rfbregion.h", + "sys/types.h", + "base64.h", + "crypto.h", + "d3des.h", + "lzoconf.h", + "lzodefs.h", + "minilzo.h", + "sha-private.h", + "sha.h", + "sockets.h", + "turbojpeg.h" + ], + "build": [] + }, + "libwebsockets": { + "headers": [ + "lws_config.h", + "libwebsockets.h" + ], + "build": [ + "mkdir -p /tmp/mybuild", + "cd /tmp/mybuild", + "cmake -DCMAKE_C_FLAGS=\"$CFLAGS\" -DCMAKE_CXX_FLAGS=\"$CXXFLAGS\" \\", + " -DCMAKE_EXE_LINKER_FLAGS=\"$CFLAGS\" -DCMAKE_SHARED_LINKER_FLAGS=\"$CFLAGS\" --install-prefix ${HEADERFILES_CUSTOM_INSTALL_DIR} ..", + "make install", + "make clean", + "cd -" + ] + }, + "libxls": { + "headers": [ + "locale.h", + "xls.h" + ], + "build": [ + "if [ -f ./autogen.sh ]; then", + "./autogen.sh", + "else", + "./bootstrap", + "fi", + "./configure --enable-static --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make install", + "make clean" + ] + }, + "libyang": { + "headers": [ + "libyang/libyang.h", + "libyang/hash_table.h", + "libyang/plugins_types.h", + "libyang/version.h" + ], + "build": [ + "pushd libyang", + "git checkout devel", + "mkdir -p build1", + "cd build1", + "cmake -DENABLE_STATIC=ON --install-prefix ${HEADERFILES_CUSTOM_INSTALL_DIR} ../", + "make install", + "make clean", + "popd" + ] + }, + "lua": { + "headers": [ + "lapi.h", + "lauxlib.h", + "lcode.h", + "lctype.h", + "ldebug.h", + "ldo.h", + "lfunc.h", + "lgc.h", + "llex.h", + "llimits.h", + "lmem.h", + "lobject.h", + "lopcodes.h", + "lopnames.h", + "lparser.h", + "lprefix.h", + "lstate.h", + "lstring.h", + "ltable.h", + "ltests.h", + "ltm.h", + "lua.h", + "luaconf.h", + "lualib.h", + "lundump.h", + "lvm.h", + "lzio.h" + ], + "build": [] + }, + "lwan": { + "headers": [ + "lwan/lwan.h", + "lwan/lwan-build-config.h", + "lwan/lwan-mod-lua.h", + "lwan/lwan-mod-redirect.h", + "lwan/lwan-mod-response.h", + "lwan/lwan-mod-rewrite.h", + "lwan/lwan-mod-serve-files.h", + "lwan/lwan-template.h" + ], + "build": [ + "mkdir -p /tmp/build", + "cd /tmp/build", + "cmake -GNinja --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} $SRC/lwan", + "ninja -v liblwan.a", + "ninja -v install", + "cd -" + ] + }, + "mbedtls": { + "headers": [ + "mbedtls/aes.h", + "mbedtls/aria.h", + "mbedtls/asn1.h", + "mbedtls/asn1write.h", + "mbedtls/base64.h", + "mbedtls/block_cipher.h", + "mbedtls/camellia.h", + "mbedtls/ccm.h", + "mbedtls/chacha20.h", + "mbedtls/chachapoly.h", + "mbedtls/check_config.h", + "mbedtls/cipher.h", + "mbedtls/cmac.h", + "mbedtls/compat-2.x.h", + "mbedtls/config_adjust_legacy_crypto.h", + "mbedtls/config_adjust_legacy_from_psa.h", + "mbedtls/config_adjust_psa_from_legacy.h", + "mbedtls/config_adjust_psa_superset_legacy.h", + "mbedtls/config_adjust_ssl.h", + "mbedtls/config_adjust_x509.h", + "mbedtls/config_psa.h", + "mbedtls/constant_time.h", + "mbedtls/ctr_drbg.h", + "mbedtls/debug.h", + "mbedtls/des.h", + "mbedtls/dhm.h", + "mbedtls/ecdh.h", + "mbedtls/ecdsa.h", + "mbedtls/ecjpake.h", + "mbedtls/ecp.h", + "mbedtls/entropy.h", + "mbedtls/error.h", + "mbedtls/gcm.h", + "mbedtls/hkdf.h", + "mbedtls/hmac_drbg.h", + "mbedtls/lms.h", + "mbedtls/mbedtls_config.h", + "mbedtls/md.h", + "mbedtls/md5.h", + "mbedtls/memory_buffer_alloc.h", + "mbedtls/net_sockets.h", + "mbedtls/nist_kw.h", + "mbedtls/oid.h", + "mbedtls/pem.h", + "mbedtls/pk.h", + "mbedtls/pkcs12.h", + "mbedtls/pkcs5.h", + "mbedtls/pkcs7.h", + "mbedtls/platform.h", + "mbedtls/platform_time.h", + "mbedtls/poly1305.h", + "mbedtls/psa_util.h", + "mbedtls/ripemd160.h", + "mbedtls/rsa.h", + "mbedtls/sha1.h", + "mbedtls/sha256.h", + "mbedtls/sha3.h", + "mbedtls/sha512.h", + "mbedtls/ssl.h", + "mbedtls/ssl_cache.h", + "mbedtls/ssl_ciphersuites.h", + "mbedtls/ssl_cookie.h", + "mbedtls/ssl_ticket.h", + "mbedtls/threading.h", + "mbedtls/timing.h", + "mbedtls/version.h", + "mbedtls/x509.h", + "mbedtls/x509_crl.h", + "mbedtls/x509_crt.h", + "mbedtls/x509_csr.h", + "psa/build_info.h", + "psa/crypto.h", + "psa/crypto_adjust_auto_enabled.h", + "psa/crypto_adjust_config_dependencies.h", + "psa/crypto_adjust_config_key_pair_types.h", + "psa/crypto_adjust_config_synonyms.h", + "psa/crypto_builtin_composites.h", + "psa/crypto_builtin_key_derivation.h", + "psa/crypto_builtin_primitives.h", + "psa/crypto_compat.h", + "psa/crypto_config.h", + "psa/crypto_driver_common.h", + "psa/crypto_driver_contexts_composites.h", + "psa/crypto_driver_contexts_key_derivation.h", + "psa/crypto_driver_contexts_primitives.h", + "psa/crypto_extra.h", + "psa/crypto_legacy.h", + "psa/crypto_platform.h", + "psa/crypto_se_driver.h", + "psa/crypto_sizes.h", + "psa/crypto_struct.h", + "psa/crypto_types.h", + "psa/crypto_values.h" + ], + "build": [ + "mkdir -p /src/mbedtls/build1", + "cd /src/mbedtls/build1", + "cmake -DENABLE_TESTING=OFF --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} ..", + "make install", + "make clean", + "cd -" + ] + }, + "mdbtools": { + "headers": [ + "mdbfakeglib.h", + "mdbtools.h" + ], + "build": [ + "cd /src/mdbtools", + "autoreconf -f -i", + "./configure --enable-static --disable-man --disable-glib --disable-silent-rules --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make install", + "make clean", + "cd -" + ] + }, + "minizip": { + "headers": [ + "mz.h", + "mz_crypt.h", + "mz_strm.h", + "mz_strm_mem.h", + "mz_strm_pkcrypt.h", + "mz_strm_wzaes.h", + "mz_zip.h", + "mz_zip_rw.h", + "zip.h", + "mz_compat.h", + "mz_os.h", + "mz_strm_buf.h", + "mz_strm_os.h", + "mz_strm_split.h", + "unzip.h" + ], + "build": [ + "cd /src/minizip-ng", + "cmake . -DCMAKE_C_FLAGS=\"$CFLAGS\" -DCMAKE_CXX_FLAGS=\"$CXXFLAGS\" -DMZ_BUILD_FUZZ_TESTS=ON --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} -DCMAKE_VERBOSE_MAKEFILE=ON", + "make install", + "make clean", + "cd -" + ] + }, + "ndpi": { + "headers": [ + "ndpi_api.h", + "ndpi_classify.h", + "ndpi_encryption.h", + "ndpi_patricia_typedefs.h", + "ndpi_replace_printf.h", + "ndpi_unix.h" + ], + "build": [ + "# build libpcap", + "tar -xvzf libpcap-1.9.1.tar.gz", + "cd libpcap-1.9.1", + "./configure --disable-shared", + "make -j$(nproc)", + "make install", + "make clean", + "cd ..", + "# build project", + "cd ndpi", + "RANLIB=llvm-ranlib LDFLAGS=\"-L/usr/local/lib -lpcap\" ./autogen.sh --enable-fuzztargets --with-only-libndpi --enable-tls-sigs --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make -j$(nproc)", + "make install", + "make clean", + "cd .." + ] + }, + "netcdf": { + "headers": [ + "netcdf.h", + "netcdf_aux.h", + "netcdf_dispatch.h", + "netcdf_filter.h", + "netcdf_mem.h", + "netcdf_meta.h" + ], + "build": [ + "mkdir -p /src/netcdf-c/build1", + "cmake --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} -DCMAKE_VERBOSE_MAKEFILE=ON -DBUILD_SHARED_LIBS=OFF -DENABLE_HDF5=OFF -DENABLE_DAP=OFF ..", + "make install", + "make clean", + "cd -" + ] + }, + "njs": { + "headers": [ + "njs_main.h", + "qjs.h", + "njs_value.h" + ], + "build": [] + }, + "oniguruma": { + "headers": [ + "oniguruma.h", + "oniggnu.h" + ], + "build": [ + "cd /src/oniguruma", + "./autogen.sh", + "./configure --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make install", + "make clean", + "cd -" + ] + }, + "openexr": { + "headers": [ + "openexr.h" + ], + "build": [ + "mkdir -p /tmp/build", + "cd /tmp/build", + "CMAKE_SETTINGS=(", + " \"-D BUILD_SHARED_LIBS=OFF\" # Build static libraries only", + " \"-D BUILD_TESTING=OFF\" # Or tests", + " \"-D OPENEXR_INSTALL_EXAMPLES=OFF\" # Or examples", + " \"-D OPENEXR_LIB_SUFFIX=\" # Don't append the version number to library files", + ")", + "cmake --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} $SRC/openexr ${CMAKE_SETTINGS[@]}", + "make -j$(nproc)", + "make install", + "make clean", + "cd -", + "export CFLAGS=\"$CFLAGS -I /build_install_dir/include/Imath -I /build_install_dir/include/OpenEXR \"", + "export CXXFLAGS=\"$CXXFLAGS -I /build_install_dir/include/Imath -I /build_install_dir/include/OpenEXR \"" + ] + }, + "opusfile": { + "headers": [ + "fcntl.h", + "opus/opusfile.h" + ], + "build": [ + "./autogen.sh", + "./configure --enable-static --disable-shared --disable-doc --enable-assertions --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make", + "make install", + "ldconfig", + "make clean" + ] + }, + "ostree": { + "headers": [ + "fcntl.h", + "stdbool.h", + "ostree.h" + ], + "build": [ + "# Build glib with sanitizer support", + "cd glib", + "mkdir build", + "cd build", + "meson --prefix=/usr --buildtype=release -Db_lundef=false -Ddefault_library=static -Dlibmount=disabled", + "ninja", + "ninja install", + "cd ..", + "rm -rf build", + "# Build libostree", + "cd $SRC/ostree", + "env NOCONFIGURE=1 ./autogen.sh", + "./configure --enable-static --without-selinux --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make V=1 install", + "make clean", + "cd /src" + ] + }, + "picotls": { + "headers": [ + "picotls.h", + "picotls/asn1.h", + "picotls/ffx.h", + "picotls/minicrypto.h", + "picotls/pembase64.h", + "picotls/certificate_compression.h", + "picotls/fusion.h", + "picotls/openssl.h", + "picotls/ptlsbcrypt.h" + ], + "build": [ + "export LDFLAGS=\"${LDFLAGS} -lpthread \"", + "pushd $SRC/picotls", + "cmake --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} -DBUILD_FUZZER=ON -DOSS_FUZZ=ON .", + "make", + "make clean", + "popd" + ] + }, + "pidgin": { + "headers": [ + "purple.h" + ], + "build": [ + "# Place to keep dependencies for static linking", + "DEPS=/deps", + "mkdir -p ${DEPS}", + "# Build libffi", + "cd $SRC", + "tar xvfz libffi-3.2.1.tar.gz", + "cd libffi-3.2.1", + "./configure --disable-shared", + "make -j$(nproc)", + "export LIBFFI_LIBS=\"-L/src/libffi-3.2.1 libraries/ -lffi\"", + "cp ./x86_64-unknown-linux-gnu/.libs/libffi.a ${DEPS}/", + "# Build libxml2", + "cd $SRC/libxml2", + "./autogen.sh \\", + " --disable-shared \\", + " --without-debug \\", + " --without-ftp \\", + " --without-http \\", + " --without-legacy \\", + " --without-python", + "make -j$(nproc)", + "make install", + "cp .libs/libxml2.a ${DEPS}/", + "# Build glib", + "cd $SRC/glib", + "GLIB_BUILD=$WORK/meson", + "rm -rf $GLIB_BUILD", + "mkdir $GLIB_BUILD", + "meson $GLIB_BUILD \\", + " -Db_lundef=false \\", + " -Ddefault_library=static \\", + " -Dlibmount=disabled", + "ninja -C $GLIB_BUILD", + "ninja -C $GLIB_BUILD install", + "cp ${GLIB_BUILD}/gobject/libgobject-2.0.a ${DEPS}/", + "cp ${GLIB_BUILD}/gmodule/libgmodule-2.0.a ${DEPS}/", + "cp ${GLIB_BUILD}/glib/libglib-2.0.a ${DEPS}/", + "# Build Pidgin", + "cd $SRC", + "tar -xf pidgin-2.14.10.tar.bz2", + "mv pidgin-2.14.10 pidgin", + "cd pidgin", + "./configure --disable-consoleui \\", + " --disable-shared \\", + " --disable-screensaver \\", + " --disable-sm \\", + " --disable-gtkspell \\", + " --disable-gevolution \\", + " --enable-gnutls=no \\", + " --disable-gstreamer \\", + " --disable-vv \\", + " --disable-idn \\", + " --disable-meanwhile \\", + " --disable-avahi \\", + " --disable-dbus \\", + " --disable-perl \\", + " --disable-tcl \\", + " --disable-cyrus-sasl \\", + " --disable-gtkui \\", + " --enable-nss=no --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make -j$(nproc) install", + "make clean", + "cd /src" + ] + }, + "pjsip": { + "headers": [ + "pjlib-util.h", + "pjlib.h", + "pjmedia-codec.h", + "pjmedia.h", + "pjmedia_audiodev.h", + "pjmedia_videodev.h", + "pjnath.h", + "pjsip.h", + "pjsip_simple.h", + "pjsip_ua.h", + "pjsua.h" + ], + "build": [ + "./configure \\", + " --disable-ffmpeg --disable-ssl \\", + " --disable-speex-aec --disable-speex-codec \\", + " --disable-g7221-codec --disable-gsm-codec --disable-ilbc-codec \\", + " --disable-resample --disable-libsrtp --disable-libwebrtc --disable-libyuv --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make dep", + "make --ignore-errors", + "make install", + "make clean" + ] + }, + "proftpd": { + "headers": [ + "bindings.h", + "class.h", + "conf.h", + "configdb.h", + "ctrls.h", + "dirtree.h", + "error.h", + "expr.h", + "fsio.h", + "inet.h", + "jot.h", + "json.h", + "memcache.h", + "mod_ctrls.h", + "netaddr.h", + "openbsd-blowfish.h", + "os.h", + "pr-syslog.h", + "proftpd.h", + "redis.h", + "sets.h", + "signals.h", + "table.h", + "version.h" + ], + "build": [ + "cd /src/proftpd", + "export LDFLAGS=\"${CFLAGS} \"", + "./configure --enable-ctrls --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make", + "make clean", + "cd -" + ] + }, + "pupnp": { + "headers": [ + "list.h", + "ixml.h", + "ixmldebug.h" + ], + "build": [ + "mkdir -p tmp/build", + "cd tmp/build", + "cmake -DFUZZER=ON -DLIB_FUZZING_ENGINE=\"$LIB_FUZZING_ENGINE\" --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} ../../", + "make -j$(nproc)", + "make install", + "make clean", + "cd -" + ] + }, + "sleuthkit": { + "headers": [ + "tsk/libtsk.h", + "tsk/tsk_incs.h", + "tsk/pool/tsk_apfs.h", + "tsk/util/detect_encryption.h", + "tsk/util/file_system_utils.h", + "tsk/vs/tsk_dos.h", + "tsk/vs/tsk_mac.h", + "tsk/vs/tsk_gpt.h", + "tsk/vs/tsk_bsd.h", + "tsk/vs/tsk_sun.h", + "tsk/img/logical_img.h", + "tsk/base/tsk_os.h", + "tsk/fs/tsk_exfatfs.h", + "tsk/fs/tsk_yaffs.h", + "tsk/fs/tsk_fatxxfs.h", + "tsk/fs/tsk_logical_fs.h", + "tsk/fs/tsk_apfs.h", + "tsk/fs/tsk_ffs.h", + "tsk/fs/tsk_fs.h", + "tsk/fs/tsk_ntfs.h", + "tsk/fs/apfs_fs.h", + "tsk/fs/tsk_fatfs.h", + "tsk/fs/decmpfs.h", + "tsk/fs/tsk_ext2fs.h", + "tsk/fs/tsk_hfs.h", + "tsk/fs/tsk_iso9660.h" + ], + "build": [ + "export CFLAGS=\"$CFLAGS -Wno-error=non-c-typedef-for-linkage\"", + "export CXXFLAGS=\"$CXXFLAGS -Wno-error=non-c-typedef-for-linkage\"", + "# Disable error on all warnings", + "sed -i 's/-Werror//g' ./tsk/util/Makefile.am", + "sed -i 's/-Werror//g' ./tsk/pool/Makefile.am", + "./bootstrap", + "./configure --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} --enable-static --disable-shared --disable-java --without-afflib --without-libewf --without-libvhdi --without-libvmdk", + "make install", + "make clean" + ] + }, + "tidy-html5": { + "headers": [ + "tidybuffio.h", + "stdio.h", + "stdlib.h", + "string.h", + "stdint.h" + ], + "build": [ + "mkdir -p /src/tidy-html5/build1", + "cd /src/tidy-html5/build1", + "cmake -GNinja -DCMAKE_INSTALL_PREFIX=${HEADERFILES_CUSTOM_INSTALL_DIR} ${SRC}/tidy-html5/", + "ninja", + "ninja install", + "cd -" + ] + }, + "unicorn": { + "headers": [ + "uc_priv.h" + ], + "build": [ + "mkdir -p /src/unicorn/build1", + "cd /src/unicorn/build1", + "cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=off --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make install", + "make clean", + "rm -rf /out/*", + "find /src/unicorn/build1 -type f ! -name '*.a' -delete", + "cd -", + "rm -rf /src/unicorn/build1" + ] + }, + "unit": { + "headers": [ + "nxt_main.h", + "nxt_conf.h" + ], + "build": [] + }, + "utf8proc": { + "headers": [ + "utf8proc.h" + ], + "build": [ + "mkdir -p /src/utf8proc/build1", + "cd /src/utf8proc/build1", + "cmake .. -DUTF8PROC_ENABLE_TESTING=ON -DLIB_FUZZING_ENGINE=\"$LIB_FUZZING_ENGINE\" --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "V=1 make install", + "make clean", + "cd -" + ] + }, + "vlc": { + "headers": [ + "vlc/vlc.h" + ], + "build": [ + "cd /src/vlc", + "# Use OSS-Fuzz environment rather than hardcoded setup.", + "sed -i 's/-fsanitize-coverage=trace-pc-guard//g' ./configure.ac", + "sed -i 's/-fsanitize-coverage=trace-cmp//g' ./configure.ac", + "sed -i 's/-fsanitize-coverage=trace-pc//g' ./configure.ac", + "sed -i 's/-lFuzzer//g' ./configure.ac", + "# In order to build statically we avoid libxml and ogg plugins.", + "sed -i 's/..\\/..\\/lib\\/libvlc_internal.h/lib\\/libvlc_internal.h/g' ./test/src/input/decoder.c", + "sed -i 's/..\\/modules\\/libxml_plugin.la//g' ./test/Makefile.am", + "sed -i 's/..\\/modules\\/libogg_plugin.la//g' ./test/Makefile.am", + "sed -i 's/f(misc_xml_xml)//g' ./test/src/input/demux-run.c", + "sed -i 's/f(demux_ogg)//g' ./test/src/input/demux-run.c", + "# Ensure that we compile with the correct link flags.", + "RULE=vlc_demux_libfuzzer_LDADD", + "FUZZ_LDFLAGS=\"vlc_demux_libfuzzer_LDFLAGS=\\${LIB_FUZZING_ENGINE}\"", + "sed -i \"s/${RULE}/${FUZZ_LDFLAGS}\\n${RULE}/g\" ./test/Makefile.am", + "RULE=vlc_demux_dec_libfuzzer_LDADD", + "FUZZ_LDFLAGS=\"vlc_demux_dec_libfuzzer_LDFLAGS=\\${LIB_FUZZING_ENGINE}\"", + "sed -i \"s/${RULE}/${FUZZ_LDFLAGS}\\n${RULE}/g\" ./test/Makefile.am", + "./bootstrap", + "./configure --disable-ogg --disable-oggspots --disable-libxml2 --disable-lua \\", + " --disable-shared \\", + " --enable-static \\", + " --enable-vlc=no \\", + " --disable-avcodec \\", + " --disable-swscale \\", + " --disable-a52 \\", + " --disable-xcb \\", + " --disable-alsa \\", + " --with-libfuzzer --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}", + "make -j$(nproc) install", + "make clean", + "cd -" + ] + }, + "w3m": { + "headers": [ + "stdlib.h", + "stdint.h", + "string.h", + "stddef.h" + ], + "build": [] + }, + "wasm3": { + "headers": [ + "wasm3.h", + "m3_api_libc.h" + ], + "build": [] + }, + "zydis": { + "headers": [ + "Zydis/Decoder.h", + "Zydis/DecoderTypes.h", + "Zydis/Defines.h", + "Zydis/Disassembler.h", + "Zydis/Encoder.h", + "Zydis/Formatter.h", + "Zydis/FormatterBuffer.h", + "Zydis/MetaInfo.h", + "Zydis/Mnemonic.h", + "Zydis/Register.h", + "Zydis/Segment.h", + "Zydis/SharedTypes.h", + "Zydis/ShortString.h", + "Zydis/Status.h", + "Zydis/Utils.h", + "Zydis/Zydis.h" + ], + "build": [ + "mkdir -p /src/zydis/build1", + "cd /src/zydis/build1", + "cmake \\", + " -DZYAN_FORCE_ASSERTS=ON \\", + " -DZYDIS_BUILD_EXAMPLES=OFF \\", + " -DZYDIS_BUILD_TOOLS=OFF \\", + " -DCMAKE_BUILD_TYPE=RelWithDebInfo \\", + " \"-DCMAKE_C_COMPILER=${CC}\" \\", + " \"-DCMAKE_CXX_COMPILER=${CXX}\" \\", + " \"-DCMAKE_C_FLAGS=${CFLAGS}\" \\", + " \"-DCMAKE_CXX_FLAGS=${CXXFLAGS}\" \\", + " --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} ..", + "make install", + "make clean", + "cd -" + ] + } +} diff --git a/headerfiles/headerfiles/data/headerfiles.json.bk b/headerfiles/headerfiles/data/headerfiles.json.bk new file mode 100644 index 0000000000..5754a5269a --- /dev/null +++ b/headerfiles/headerfiles/data/headerfiles.json.bk @@ -0,0 +1,246 @@ +{ + "libfdk-aac": [ + "aacdecoder_lib.h", + "aacenc_lib.h", + "ac_arith_coder.h", + "FDK_drcDecLib.h", + "tpdec_lib.h", + "tpenc_lib.h", + "pcm_utils.h", + "pcmdmx_lib.h", + "limiter.h", + "sac_dec_lib.h", + "sacenc_lib.h", + "sbrdecoder.h", + "sbr_encoder.h", + "FDK_audio.h", + + "FDK_lpc.h", + "fft_rad2.h", + "FDK_matrixCalloc.h", + "qmf.h", + "FDK_tools_rom.h", + "dct.h", + "huff_nodes.h", + "FDK_bitstream.h", + "FDK_bitbuffer.h", + "mdct.h", + "FDK_core.h", + "FDK_qmf_domain.h", + "FDK_decorrelate.h", + "FDK_hybrid.h", + "nlc_dec.h", + "FDK_trigFcts.h", + "scramble.h", + "FDK_crc.h", + "fft.h", + "autocorr2nd.h", + "machine_type.h", + "genericStds.h", + "syslib_channelMapDescr.h" + ], + "libfuse": [ + "fuse.h", + "fuse_lowlevel.h", + "fuse_i.h", + "fuse_misc.h", + "fuse_kernel.h", + "mount_util.h", + "fuse_mount_compat.h", + "cuse_lowlevel.h" + ], + "libpsl": [ + "unicode/decimfmt.h", + "unicode/ucol.h", + "unicode/udat.h", + "unilbrk.h", + "unicode/enumset.h", + "unicode/tzrule.h", + "unicode/utf_old.h", + "unicode/ulocdata.h", + "unicode/ureldatefmt.h", + "unicode/vtzone.h", + "unicode/uregion.h", + "unicode/coll.h", + "uniwidth.h", + "unicode/uloc.h", + "unicode/timezone.h", + "unicode/rbbi.h", + "unicode/unifunct.h", + "unicode/usprep.h", + "unicode/appendable.h", + "unicode/umachine.h", + "unicode/regex.h", + "unicode/uregex.h", + "uniconv.h", + "uninorm.h", + "unicode/ubiditransform.h", + "unicode/locdspnm.h", + "unicode/numsys.h", + "unicode/ulistformatter.h", + "unicode/rbnf.h", + "unicode/uspoof.h", + "unicode/utypes.h", + "unicode/tzfmt.h", + "unicode/ustring.h", + "unicode/rep.h", + "unicode/char16ptr.h", + "unicode/uversion.h", + "unicode/sortkey.h", + "unicode/dtintrv.h", + "unicode/currunit.h", + "unicode/locid.h", + "unicode/utf.h", + "unicode/dtptngen.h", + "unicode/unorm.h", + "unicode/uchriter.h", + "unicode/edits.h", + "unicode/uenum.h", + "unicode/plurfmt.h", + "unicode/unumsys.h", + "unicode/casemap.h", + "unicode/measfmt.h", + "unicode/stringpiece.h", + "unicode/filteredbrk.h", + "unicode/utext.h", + "unicode/uobject.h", + "unicode/udata.h", + "unigbrk.h", + "unicode/format.h", + "unicode/tmutamt.h", + "unicode/ushape.h", + "unicode/ucurr.h", + "unicode/ucharstriebuilder.h", + "unicode/normlzr.h", + "unicode/coleitr.h", + "unicode/strenum.h", + "unicode/rbtz.h", + "idn2.h", + "unicode/unum.h", + "unicode/errorcode.h", + "unicode/parsepos.h", + "unicode/smpdtfmt.h", + "unicode/choicfmt.h", + "unicode/tmunit.h", + "unicode/ustringtrie.h", + "unicode/dtrule.h", + "unicode/ptypes.h", + "unicode/unirepl.h", + "unicode/usearch.h", + "unicode/ubidi.h", + "punycode.h", + "unicode/search.h", + "unicode/umsg.h", + "unicode/dtitvfmt.h", + "unicode/putil.h", + "unicode/reldatefmt.h", + "unicode/chariter.h", + "unicode/currpinf.h", + "unicode/ucat.h", + "unicode/ucsdet.h", + "unicode/uidna.h", + "unicode/msgfmt.h", + "unicode/umisc.h", + "unictype.h", + "unicode/parseerr.h", + "unicode/ucnvsel.h", + "unicode/fieldpos.h", + "unicode/uiter.h", + "unicode/std_string.h", + "unicode/urep.h", + "unicode/unistr.h", + "unicode/alphaindex.h", + "unicode/ubrk.h", + "unicode/unorm2.h", + "unicode/ucasemap.h", + "unicode/dtfmtsym.h", + "unicode/messagepattern.h", + "unicode/basictz.h", + "unicode/stringtriebuilder.h", + "unicode/schriter.h", + "unicode/brkiter.h", + "unicode/unimatch.h", + "unicode/idna.h", + "unicode/ucharstrie.h", + "unicode/normalizer2.h", + "unicode/ures.h", + "unicode/gregocal.h", + "unicode/bytestream.h", + "unicode/upluralrules.h", + "unicode/listformatter.h", + "unicode/utmscale.h", + "unicode/compactdecimalformat.h", + "unicode/measunit.h", + "unicode/uclean.h", + "unicase.h", + "unicode/selfmt.h", + "unicode/region.h", + "unicode/tznames.h", + "unistdio.h", + "unicode/icuplug.h", + "unicode/datefmt.h", + "unicode/udateintervalformat.h", + "unicode/simpletz.h", + "unicode/bytestrie.h", + "unicode/platform.h", + "unicode/urename.h", + "unicode/tmutfmt.h", + "unicode/scientificnumberformatter.h", + "unicode/utf16.h", + "unicode/translit.h", + "unicode/plurrule.h", + "unicode/dbbi.h", + "unicode/udatpg.h", + "unicode/simpleformatter.h", + "unicode/caniter.h", + "unicode/uniset.h", + "unicode/curramt.h", + "unicode/ucnv.h", + "unicode/gender.h", + "unicode/numfmt.h", + "unicode/uscript.h", + "unicode/measure.h", + "unicode/ucnv_cb.h", + "unicode/usetiter.h", + "unicode/bytestriebuilder.h", + "unicode/ucal.h", + "idn-int.h", + "unicode/symtable.h", + "unicode/fpositer.h", + "unicode/ugender.h", + "unistr.h", + "unicode/unifilt.h", + "unicode/utrans.h", + "unicode/uformattable.h", + "unicode/uconfig.h", + "unicode/tblcoll.h", + "unicode/stsearch.h", + "unicode/uchar.h", + "unicode/tztrans.h", + "unicode/ufieldpositer.h", + "unicode/uldnames.h", + "unicode/localpointer.h", + "unistring/version.h", + "unicode/dcfmtsym.h", + "unicode/uset.h", + "uniname.h", + "unicode/dtitvinf.h", + "unicode/udisplaycontext.h", + "unitypes.h", + "unicode/ucnv_err.h", + "unicode/icudataver.h", + "unicode/utf8.h", + "unicode/fmtable.h", + "unicode/calendar.h", + "unicode/utrace.h", + "unicode/resbund.h", + "unicode/ucoleitr.h", + "uniwbrk.h" + ], + "libsodium": [ + "sodium.h" + ], + "libtasn1": [ + "libtasn1.h" + ] +} \ No newline at end of file diff --git a/headerfiles/release.sh b/headerfiles/release.sh new file mode 100644 index 0000000000..ada17e8248 --- /dev/null +++ b/headerfiles/release.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# release.sh - A script to build and upload Python packages to PyPI + +# Exit immediately if a command exits with a non-zero status +set -e + +# Ensure required tools are installed +echo "Checking for required tools..." +REQUIRED_TOOLS=(python3 pip twine) +for tool in "${REQUIRED_TOOLS[@]}"; do + if ! command -v $tool &> /dev/null; then + echo "$tool is not installed. Installing..." + pip install $tool + else + echo "$tool is already installed." + fi +done + +# Clean previous builds +echo "Cleaning previous builds..." +rm -rf build/ dist/ *.egg-info + +# Build the package +echo "Building the package..." +python3 setup.py sdist bdist_wheel + +# Upload the package to PyPI +echo "Uploading the package to PyPI..." +twine upload dist/* + +echo "Package uploaded successfully!" + +# Note: You might need to add --verbose flag to see more details +# Example: twine upload --verbose dist/* diff --git a/headerfiles/setup.py b/headerfiles/setup.py new file mode 100644 index 0000000000..9982f0a07b --- /dev/null +++ b/headerfiles/setup.py @@ -0,0 +1,36 @@ +from setuptools import setup, find_packages + +setup( + name='headerfiles', + version='0.4', + packages=find_packages(), + include_package_data=True, + install_requires=[ + # add deps here + 'click', + ], + entry_points={ + 'console_scripts': [ + 'headerfiles-cli=headerfiles.cli:cli', + ], + }, + package_data={ + 'headerfiles' : ['data/headerfiles.json'], + }, + extras_require={ + 'dev': [ + 'pytest', + ], + }, + author='Cen Zhang', + author_email='blbllhy@gmail.com', + description='Header files inference for C/C++ projects', + long_description=open('README.md').read(), + long_description_content_type='text/markdown', + url='https://github.com/occia/headerfiles', + classifiers=[ + 'Programming Language :: Python :: 3', + 'Operating System :: OS Independent', + ], + python_requires='>=3.7', +) diff --git a/headerfiles/tests/test_api.py b/headerfiles/tests/test_api.py new file mode 100644 index 0000000000..7c92e83d5d --- /dev/null +++ b/headerfiles/tests/test_api.py @@ -0,0 +1,25 @@ +import headerfiles.api as api + +def test_is_supported_proj(): + assert api.is_supported_proj("libfdk-aac") + assert api.is_supported_proj("libfuse") + assert api.is_supported_proj("libpsl") + assert api.is_supported_proj("libsodium") + assert api.is_supported_proj("libtasn1") + assert not api.is_supported_proj("aaa") + +def check_result_is_list_of_strings(result: list): + assert isinstance(result, list) + assert len(result) == 0 or all(isinstance(x, str) for x in result) + +def test_get_proj_headers(): + check_result_is_list_of_strings(api.get_proj_headers("libfdk-aac")) + check_result_is_list_of_strings(api.get_proj_headers("libfuse")) + check_result_is_list_of_strings(api.get_proj_headers("libpsl")) + check_result_is_list_of_strings(api.get_proj_headers("libsodium")) + check_result_is_list_of_strings(api.get_proj_headers("libtasn1")) + assert api.get_proj_headers("aaa") is None + +if __name__ == "__main__": + import pytest + pytest.main() diff --git a/llm_toolkit/prompt_builder.py b/llm_toolkit/prompt_builder.py index 088a7ac1a6..7087614317 100644 --- a/llm_toolkit/prompt_builder.py +++ b/llm_toolkit/prompt_builder.py @@ -23,6 +23,9 @@ import jinja2 +# import headerfiles.api as headerfiles +from headerfiles.headerfiles import api as headerfiles + from data_prep import introspector, project_targets from experiment import oss_fuzz_checkout from experiment.benchmark import Benchmark, FileType @@ -73,6 +76,7 @@ C_PROMPT_HEADERS_TO_ALWAYS_INCLUDES = ['stdio.h', 'stdlib.h', 'stdint.h'] +HEADERFILES = bool(os.getenv('LLM_HEADERFILES', '')) class PromptBuilder: """Prompt builder.""" @@ -102,6 +106,24 @@ def build_triager_prompt(self, benchmark: Benchmark, driver_code: str, def post_process_generated_code(self, generated_code: str) -> str: """Allows prompt builder to adjust the generated code.""" # return the same by default + if not HEADERFILES: + return generated_code + + lines = generated_code.splitlines() + + # filter error lines: "" or "" + filtered_lines = [line for line in lines if line not in ("", "")] + generated_code = "\n".join(filtered_lines) + + # filter duplicate headers + headers_to_include = headerfiles.get_proj_headers(self.benchmark.project) + headers_to_include = [f'#include "{header}"' for header in headers_to_include] + existing_headers = [line for line in generated_code.splitlines() if line.startswith('#include')] + for line in existing_headers: + generated_code = generated_code.replace(line, '') + headers_to_append = [header for header in existing_headers if header not in headers_to_include] + headers_to_include.extend(headers_to_append) + generated_code = '\n'.join(headers_to_include) + '\n' + '\n' + generated_code.strip() return generated_code @@ -1162,9 +1184,14 @@ def build(self, function_source) # Set header inclusion string if there are any headers. - headers_to_include = \ - introspector.query_introspector_header_files_to_include( - self.benchmark.project, self.benchmark.function_signature) + if HEADERFILES: + headers_to_include = headerfiles.get_proj_headers(self.benchmark.project) + else: + headers_to_include = [] + for header in introspector.query_introspector_header_files_to_include( + self.benchmark.project, self.benchmark.function_signature): + if header not in headers_to_include: + headers_to_include.append(header) header_inclusion_string = '' if headers_to_include: header_inclusion_string = ', '.join(headers_to_include) diff --git a/prompts/template_xml/context.txt b/prompts/template_xml/context.txt index 0a578bb317..87b269c57f 100644 --- a/prompts/template_xml/context.txt +++ b/prompts/template_xml/context.txt @@ -1,7 +1,12 @@ -{% if include_statement %} -You must add the following #include statement in the fuzz target, its header file defines the function-under-test. +{% if headers or include_statement %} +We have prepared the following list of headers which covers all target project APIs and will prepend them as #include statments at the beginning of your generated fuzz target. Therefore, you only need to include the headers of non-target-project APIs used in your fuzz target. +{% if headers %} +{{ headers }} +{% endif %} +{% if include_statement %} {{ include_statement }} +{% endif %} {% endif %} diff --git a/report/docker_run.sh b/report/docker_run.sh index f36f0cc378..cf29dde515 100755 --- a/report/docker_run.sh +++ b/report/docker_run.sh @@ -28,6 +28,8 @@ # TODO(dongge): Re-write this script in Python as it gets more complex. +export LLM_HEADERFILES=1 + BENCHMARK_SET=$1 FREQUENCY_LABEL=$2 RUN_TIMEOUT=$3 diff --git a/run_one_experiment.py b/run_one_experiment.py index ce64d5cd6b..06b7632e1f 100644 --- a/run_one_experiment.py +++ b/run_one_experiment.py @@ -49,7 +49,7 @@ # WARN: Avoid large NUM_SAMPLES in highly parallelized local experiments. # It controls the number of LLM responses per prompt, which may exceed your # LLM's limit on query-per-second. -NUM_SAMPLES = 2 +NUM_SAMPLES = 10 MAX_TOKENS: int = 4096 RUN_TIMEOUT: int = 30 TEMPERATURE: float = 0.4