]> git.ipfire.org Git - thirdparty/elfutils.git/commit
readelf: Fix use-after-free ebl pointer issue
authorMark Wielaard <mark@klomp.org>
Fri, 3 Mar 2023 13:13:49 +0000 (14:13 +0100)
committerMark Wielaard <mark@klomp.org>
Fri, 3 Mar 2023 13:13:49 +0000 (14:13 +0100)
commitb1fa74956793141771a6514c445d0884fdef3841
treed3e81e2dbed1430c689f4ac6290a3cde7598e3b6
parente24d8a4a3ea106608bb3e8d33c4639cf71d0f08d
readelf: Fix use-after-free ebl pointer issue

With -flto gcc 13 sees that we use the ebl pointer after closing and
freeing it.

In function ‘process_elf_file’,
    inlined from ‘process_dwflmod’ at readelf.c:818:3:
readelf.c:1070:6: error: pointer ‘ebl_18’ used after ‘free’ [-Werror=use-after-free]
 1070 |   if (pure_ebl != ebl)
      |      ^
In function ‘ebl_closebackend’,
    inlined from ‘process_elf_file’ at readelf.c:1068:3,
    inlined from ‘process_dwflmod’ at readelf.c:818:3:
../libebl/eblclosebackend.c:47:7: note: call to ‘free’ here
   47 |       free (ebl);
      |       ^

Fix by only calling ebl_closebackend after using it in the comparison.

Signed-off-by: Mark Wielaard <mark@klomp.org>
src/ChangeLog
src/readelf.c