Tests: Fix warning in show-die-info.c

Message ID 20211005153216.fadk42msbpz4xvx5@lug-owl.de
State Committed
Headers
Series Tests: Fix warning in show-die-info.c |

Commit Message

Jan-Benedict Glaw Oct. 5, 2021, 3:32 p.m. UTC
  Hi!

I'm running automated test compiles on Binutils, GCC, Linux, NetBSD
and, since a few days ago, elfutils.

Building/running the tests, I noticed this little warning:

.../configure --enable-maintainer-mode --enable-tests-rpath --enable-gprof --enable-gcov --enable-valgrind --prefix=/tmp/elfutils

make make V=1

[make 2021-10-01 12:18:08] /usr/lib/gcc-snapshot/bin/gcc -std=gnu99 -Wall -Wshadow -Wformat=2 -Wold-style-definition -Wstrict-prototypes -Wtrampolines -Wlogical-op -Wduplicated-cond -Wnull-dereference -Wimplicit-fallthrough=5 -Werror -Wunused -Wextra -Wstack-usage=262144   -D_FORTIFY_SOURCE=2 -g -O2 -pg -fprofile-arcs -ftest-coverage -Wl,-rpath-link,../libelf:../libdw -Wno-error=stack-usage= -pg -fprofile-arcs -o strip strip.o ../libebl/libebl.a ../backends/libebl_backends.a ../libcpu/libcpu.a ../libelf/libelf.a -lz ../libdw/libdw.a -lz -lzstd -llzma -lbz2  ../libelf/libelf.a -lz -ldl -lpthread ../lib/libeu.a  
[make 2021-10-01 12:18:08] /usr/lib/gcc-snapshot/bin/gcc -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"/tmp/elfutils/share/locale"'  -DDEBUGPRED=0 -DSRCDIR=\"/var/lib/laminar/run/elfutils/11/elfutils/src\" -DOBJDIR=\"/var/lib/laminar/run/elfutils/11/elfutils/src\" -I. -I..  -I. -I. -I../lib -I.. -I./../libelf -I./../libebl -I./../libdw -I./../libdwelf -I./../libdwfl -I./../libasm  -std=gnu99 -Wall -Wshadow -Wformat=2 -Wold-style-definition -Wstrict-prototypes -Wtrampolines -Wlogical-op -Wduplicated-cond -Wnull-dereference -Wimplicit-fallthrough=5 -Werror -Wunused -Wextra    -D_FORTIFY_SOURCE=2 -g -O2 -pg -fprofile-arcs -ftest-coverage -MT elflint.o -MD -MP -MF .deps/elflint.Tpo -c -o elflint.o elflint.c
[make 2021-10-01 12:18:15] elflint.c: In function 'check_sections':
[make 2021-10-01 12:18:15] elflint.c:4105:48: error: null pointer dereference [-Werror=null-dereference]
[make 2021-10-01 12:18:15]  4105 |                                  idx < databits->d_size && ! bad;
[make 2021-10-01 12:18:15]       |                                        ~~~~~~~~^~~~~~~~
[make 2021-10-01 12:18:18] cc1: all warnings being treated as errors
[make 2021-10-01 12:18:18] make[2]: *** [Makefile:799: elflint.o] Error 1
[make 2021-10-01 12:18:18] make[1]: *** [Makefile:532: all-recursive] Error 1
[make 2021-10-01 12:18:18] make: *** [Makefile:448: all] Error 2


As it is tested beforehand that we should not run into this, this
patch should fix the warning:




Please keep me Cc'ed as I'm not subscribed.

Thanks,
  Jan-Benedict

--
  

Comments

Mark Wielaard Oct. 6, 2021, 9:44 p.m. UTC | #1
Hi,

On Tue, Oct 05, 2021 at 05:32:16PM +0200, Jan-Benedict Glaw wrote:
> I'm running automated test compiles on Binutils, GCC, Linux, NetBSD
> and, since a few days ago, elfutils.
> 
> Building/running the tests, I noticed this little warning:
> 
> [make 2021-10-01 12:18:15] elflint.c: In function 'check_sections':
> [make 2021-10-01 12:18:15] elflint.c:4105:48: error: null pointer dereference [-Werror=null-dereference]
> [make 2021-10-01 12:18:15]  4105 |                                  idx < databits->d_size && ! bad;
> [make 2021-10-01 12:18:15]       |                                        ~~~~~~~~^~~~~~~~
> [make 2021-10-01 12:18:18] cc1: all warnings being treated as errors
> [make 2021-10-01 12:18:18] make[2]: *** [Makefile:799: elflint.o] Error 1
> [make 2021-10-01 12:18:18] make[1]: *** [Makefile:532: all-recursive] Error 1
> [make 2021-10-01 12:18:18] make: *** [Makefile:448: all] Error 2
> 
> 
> As it is tested beforehand that we should not run into this, this
> patch should fix the warning:
> 
> 
> diff --git a/src/elflint.c b/src/elflint.c
> index 1ce75684..ef7725ce 100644
> --- a/src/elflint.c
> +++ b/src/elflint.c
> @@ -4102,7 +4102,7 @@ section [%2zu] '%s' has type NOBITS but is read from the file in segment of prog
>  			    bad = (databits == NULL
>  				   || databits->d_size != shdr->sh_size);
>  			    for (size_t idx = 0;
> -				 idx < databits->d_size && ! bad;
> +				 ! bad && idx < databits->d_size;
>  				 idx++)
>  			      bad = ((char *) databits->d_buf)[idx] != 0;
>  

Thanks, that warning and the fix look correct.
I committed the attached fix.

Cheers,

Mark
  

Patch

diff --git a/src/elflint.c b/src/elflint.c
index 1ce75684..ef7725ce 100644
--- a/src/elflint.c
+++ b/src/elflint.c
@@ -4102,7 +4102,7 @@  section [%2zu] '%s' has type NOBITS but is read from the file in segment of prog
 			    bad = (databits == NULL
 				   || databits->d_size != shdr->sh_size);
 			    for (size_t idx = 0;
-				 idx < databits->d_size && ! bad;
+				 ! bad && idx < databits->d_size;
 				 idx++)
 			      bad = ((char *) databits->d_buf)[idx] != 0;