libbpf: Fix an unsigned < 0 bug
authorYonghong Song <yhs@fb.com>
Mon, 13 Jun 2022 05:43:14 +0000 (22:43 -0700)
committerDaniel Borkmann <daniel@iogearbox.net>
Tue, 14 Jun 2022 15:01:54 +0000 (17:01 +0200)
commitc49a44b39b313a4191ca2f06316c547ee673264e
tree07804cbfb15725bbea1db0e9a2b0ba15c6dfcfcf
parent6dbdc9f35360d4ef4704462c265f63b32fcb5354
libbpf: Fix an unsigned < 0 bug

Andrii reported a bug with the following information:

  2859  if (enum64_placeholder_id == 0) {
  2860  enum64_placeholder_id = btf__add_int(btf, "enum64_placeholder", 1, 0);
  >>>     CID 394804:  Control flow issues  (NO_EFFECT)
  >>>     This less-than-zero comparison of an unsigned value is never true. "enum64_placeholder_id < 0U".
  2861  if (enum64_placeholder_id < 0)
  2862  return enum64_placeholder_id;
  2863     ...

Here enum64_placeholder_id declared as '__u32' so enum64_placeholder_id < 0
is always false. Declare enum64_placeholder_id as 'int' in order to capture
the potential error properly.

Fixes: f2a625889bb8 ("libbpf: Add enum64 sanitization")
Reported-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20220613054314.1251905-1-yhs@fb.com
tools/lib/bpf/libbpf.c