From f6a589a59ea88c895d35a595c3d0580495dbc548 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Tue, 8 Aug 2023 18:39:48 +0200 Subject: libbpf: Fix long / int confusion In network terms, long is 32bit, i.e. an int for us. --- libbpf/bpf_impl.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'libbpf/bpf_impl.c') diff --git a/libbpf/bpf_impl.c b/libbpf/bpf_impl.c index 6eb9dda3..acd53409 100644 --- a/libbpf/bpf_impl.c +++ b/libbpf/bpf_impl.c @@ -66,7 +66,7 @@ bpf_do_filter(net_rcv_port_t infp, char *p, unsigned int wirelen, bpf_insn_t pc, pc_end; unsigned int buflen; - unsigned long A, X; + unsigned int A, X; int k; unsigned int mem[BPF_MEMWORDS]; @@ -114,9 +114,9 @@ bpf_do_filter(net_rcv_port_t infp, char *p, unsigned int wirelen, k = pc->k; load_word: - if ((u_int)k + sizeof(long) <= hlen) + if ((u_int)k + sizeof(int) <= hlen) data = header; - else if ((u_int)k + sizeof(long) <= buflen) { + else if ((u_int)k + sizeof(int) <= buflen) { k -= hlen; data = p; } else @@ -127,7 +127,7 @@ load_word: A = EXTRACT_LONG(&data[k]); else #endif - A = ntohl(*(long *)(data + k)); + A = ntohl(*(int *)(data + k)); continue; case BPF_LD|BPF_H|BPF_ABS: -- cgit v1.2.3