libbpf: Fix off-by-one bug in bpf_core_apply_relo()
authorAndrii Nakryiko <andrii@kernel.org>
Mon, 25 Oct 2021 22:45:28 +0000 (15:45 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Nov 2021 18:16:41 +0000 (19:16 +0100)
[ Upstream commit de5d0dcef602de39070c31c7e56c58249c56ba37 ]

Fix instruction index validity check which has off-by-one error.

Fixes: 3ee4f5335511 ("libbpf: Split bpf_core_apply_relo() into bpf_program independent helper.")
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20211025224531.1088894-2-andrii@kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
tools/lib/bpf/libbpf.c

index 51180f3..7145463 100644 (file)
@@ -5138,7 +5138,7 @@ static int bpf_core_apply_relo(struct bpf_program *prog,
         * relocated, so it's enough to just subtract in-section offset
         */
        insn_idx = insn_idx - prog->sec_insn_off;
-       if (insn_idx > prog->insns_cnt)
+       if (insn_idx >= prog->insns_cnt)
                return -EINVAL;
        insn = &prog->insns[insn_idx];