tree 0c6c9a3a6f01d2192b1150532f9914a6844d201a
parent 65d7273668ded59b1a36607e8a109d9a44376114
author Kornilios Kourtis <kornilios@isovalent.com> 1647437018 +0100
committer Arnaldo Carvalho de Melo <acme@redhat.com> 1647530380 -0300

pahole: Avoid segfault when parsing bogus file

When trying to use BTF encoding for an apparently problematic kernel
file, pahole segfaults. As can be seen below [1], the problem is that we
are trying to dereference a NULL decoder.

Fix this by checking the return value of dwfl_getmodules which [2] will
return -1 on errors or an offset if one of the modules did not return
DWARF_CB_OK. (In this specific case, it was __cus__load_debug_types that
returned DWARF_CB_ABORT.)

[1]:

  $ gdb -q --args ./pahole -J vmlinux-5.3.18-24.102-default.debug
  Reading symbols from ./pahole...
  (gdb) r
  Starting program: /tmp/pahole/build/pahole -J vmlinux-5.3.18-24.102-default.debug
  [Thread debugging using libthread_db enabled]
  Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

  Program received signal SIGSEGV, Segmentation fault.
  0x00007ffff7f4000e in gobuffer__size (gb=0x18) at /tmp/pahole/gobuffer.h:39
  39              return gb->index;
  (gdb) bt
  (gdb) frame 1
  1042            if (gobuffer__size(&encoder->percpu_secinfo) != 0)
  (gdb) list
  1037
  1038    int btf_encoder__encode(struct btf_encoder *encoder)
  1039    {
  1040            int err;
  1041
  1042            if (gobuffer__size(&encoder->percpu_secinfo) != 0)
  1043                    btf_encoder__add_datasec(encoder, PERCPU_SECTION);
  1044
  1045            /* Empty file, nothing to do, so... done! */
  1046            if (btf__get_nr_types(encoder->btf) == 0)
  (gdb) print encoder
  $1 = (struct btf_encoder *) 0x0

[2] https://sourceware.org/git/?p=elfutils.git;a=blob;f=libdwfl/libdwfl.h;h=f98f1d525d94bc7bcfc7c816890de5907ee4bd6d;hb=HEAD#l200

Signed-off-by: Kornilios Kourtis <kornilios@isovalent.com>
Acked-by: John Fastabend <john.fastabend@gmail.com>
Cc: bpf@vger.kernel.org
Cc: dwarves@vger.kernel.org
Link: http://lore.kernel.org/lkml/20220316132338.3226871-1-kkourt@kkourt.io
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
