Branch data Line data Source code
1 : : /* SPDX-License-Identifier: LGPL-2.1+ */ 2 : : 3 : : #include <errno.h> 4 : : #include <unistd.h> 5 : : 6 : : #include "sd-event.h" 7 : : #include "sd-lldp.h" 8 : : 9 : : #include "fd-util.h" 10 : : #include "fuzz.h" 11 : : #include "lldp-network.h" 12 : : 13 : : static int test_fd[2] = { -1, -1 }; 14 : : 15 : 0 : int lldp_network_bind_raw_socket(int ifindex) { 16 [ # # ]: 0 : if (socketpair(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC | SOCK_NONBLOCK, 0, test_fd) < 0) 17 : 0 : return -errno; 18 : : 19 : 0 : return test_fd[0]; 20 : : } 21 : : 22 : 0 : int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { 23 : 0 : _cleanup_(sd_event_unrefp) sd_event *e = NULL; 24 : 0 : _cleanup_(sd_lldp_unrefp) sd_lldp *lldp = NULL; 25 : : 26 [ # # ]: 0 : if (size > 2048) 27 : 0 : return 0; 28 : : 29 [ # # ]: 0 : assert_se(sd_event_new(&e) == 0); 30 [ # # ]: 0 : assert_se(sd_lldp_new(&lldp) >= 0); 31 [ # # ]: 0 : assert_se(sd_lldp_set_ifindex(lldp, 42) >= 0); 32 [ # # ]: 0 : assert_se(sd_lldp_attach_event(lldp, e, 0) >= 0); 33 [ # # ]: 0 : assert_se(sd_lldp_start(lldp) >= 0); 34 : : 35 [ # # ]: 0 : assert_se(write(test_fd[1], data, size) == (ssize_t) size); 36 [ # # ]: 0 : assert_se(sd_event_run(e, 0) >= 0); 37 : : 38 [ # # ]: 0 : assert_se(sd_lldp_stop(lldp) >= 0); 39 [ # # ]: 0 : assert_se(sd_lldp_detach_event(lldp) >= 0); 40 : 0 : test_fd[1] = safe_close(test_fd[1]); 41 : : 42 : 0 : return 0; 43 : : }