From c31ab5a0010ac9e3d31fd218fffcff1b9696363e Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 21 May 2020 09:48:35 +0930 Subject: [PATCH 1/1] asan: readelf: wild read in get_num_dynamic_syms * readelf.c (get_num_dynamic_syms): Bounds check mipsxlat array access. --- binutils/ChangeLog | 5 +++++ binutils/readelf.c | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 2b903512bf..e906bdf75c 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2020-05-21 Alan Modra + + * readelf.c (get_num_dynamic_syms): Bounds check mipsxlat array + access. + 2020-05-20 Nelson Chu * dwarf.c: Updated since DECLARE_CSR is changed. diff --git a/binutils/readelf.c b/binutils/readelf.c index 87bb574129..798782c3a8 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -10211,7 +10211,8 @@ get_num_dynamic_syms (Filedata * filedata) { if (filedata->dynamic_info_DT_MIPS_XHASH) { - if (filedata->mipsxlat[off] >= num_of_syms) + if (off < filedata->ngnuchains + && filedata->mipsxlat[off] >= num_of_syms) num_of_syms = filedata->mipsxlat[off] + 1; } else -- 2.34.1