[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: nstrftime.c fails to build due to memset overflow
|
From: |
Bruno Haible |
|
Subject: |
Re: nstrftime.c fails to build due to memset overflow |
|
Date: |
Thu, 18 May 2023 23:12:13 +0200 |
[Dropping coreutils from CC.]
Pádraig Brady wrote:
> Actually different -Wmaybe-initialized warnings can trigger at various
> optimization levels.
That's an interesting observation. Indeed, compiling a testdir of all of gnulib
at various optimization levels with gcc 13.1.0, through commands like this:
export CPPFLAGS=-Wall
mkdir build-O0; cd build-O0; CFLAGS=-O0 ../configure 2>&1 | tee log1; make
2>&1 | tee log2; cd ..
mkdir build-O1; cd build-O1; CFLAGS=-O1 ../configure 2>&1 | tee log1; make
2>&1 | tee log2; cd ..
mkdir build-O2; cd build-O2; CFLAGS=-O2 ../configure 2>&1 | tee log1; make
2>&1 | tee log2; cd ..
mkdir build-O3; cd build-O3; CFLAGS=-O3 ../configure 2>&1 | tee log1; make
2>&1 | tee log2; cd ..
mkdir build-Os; cd build-Os; CFLAGS=-Os ../configure 2>&1 | tee log1; make
2>&1 | tee log2; cd ..
mkdir build-Og; cd build-Og; CFLAGS=-Og ../configure 2>&1 | tee log1; make
2>&1 | tee log2; cd ..
I get warnings at various levels:
* All optimizations levels:
../../gllib/astrxfrm.c:159:19: warning: pointer 'result' may be used after
'realloc' [-Wuse-after-free]
../../gllib/get-rusage-data.c:354:1: warning: 'get_rusage_data_via_iterator'
defined but not used [-Wunused-function]
../../gllib/hamt.c:201:1: warning: 'init_element' defined but not used
[-Wunused-function]
../../gltests/../gllib/stack.h:75:24: warning: 'stack_current_base' defined but
not used [-Wunused-function]
* -O0 only:
../../gllib/nstrftime.c:148:31: warning: 'memset' specified size
18446744073709551615 exceeds maximum object size 9223372036854775807
[-Wstringop-overflow=]
../../gllib/nstrftime.c:147:32: warning: 'memset' specified size
18446744073709551615 exceeds maximum object size 9223372036854775807
[-Wstringop-overflow=]
* -O1, -O2, -O3 only:
../../gllib/vasnprintf.c:945:26: warning: argument 1 value
'18446744073709551615' exceeds maximum object size 9223372036854775807
[-Walloc-size-larger-than=]
* -O1, -O2, -O3, -Os only:
../../gllib/vasnprintf.c:1392:10: warning: 'e' may be used uninitialized
[-Wmaybe-uninitialized]
../../gllib/vasnprintf.c:1410:10: warning: 'e' may be used uninitialized
[-Wmaybe-uninitialized]
* -O1, -O2, -O3, -Og, -Os only:
../../gllib/getndelim2.c:191:23: warning: 'c' may be used uninitialized
[-Wmaybe-uninitialized]
* -O2, -O3, -Os only:
../../gllib/astrxfrm.c:177:1: warning: function may return address of local
variable [-Wreturn-local-addr]
* -O2, -O3 only:
../../gllib/canonicalize.c:385:33: warning: 'end_idx' may be used uninitialized
[-Wmaybe-uninitialized]
* -Og only:
../../gllib/bitset/list.c:458:22: warning: 'tmp' may be used uninitialized
[-Wmaybe-uninitialized]
I've seen many of these warnings and regularly ignored them. But one of these
warnings points to a real bug (in astrxfrm.c), that was sitting there since
the beginning.
The lesson I learn from this (once again — I already knew it before...) that
it is important to have a warning-free build on glibc systems.
Bruno
- Re: nstrftime.c fails to build due to memset overflow, Pádraig Brady, 2023/05/18
- Re: nstrftime.c fails to build due to memset overflow,
Bruno Haible <=
- astrxfrm: Fix use-after-free bug, Bruno Haible, 2023/05/18
- silence some "defined but not used" warnings, Bruno Haible, 2023/05/18
- Re: nstrftime.c fails to build due to memset overflow, Bruno Haible, 2023/05/18
- Re: nstrftime.c fails to build due to memset overflow, Bruno Haible, 2023/05/18
- silence some gcc -Wmaybe-uninitialized warnings, Bruno Haible, 2023/05/18
- Re: nstrftime.c fails to build due to memset overflow, Paul Eggert, 2023/05/18