From ca902dbd9c25ce936c6f9b3feeceec252af6cd5b Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Wed, 27 Dec 2023 16:25:37 +0100 Subject: [PATCH 1/3] timing.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make sure the ctx variable in function mbedtls_timing_self_test is initialized properly, to avoid build failures with -O3 e.g. on ppc64el cd /<>/obj-powerpc64le-linux-gnu/library && /usr/bin/cc -I/<>/include -I/<>/library -g -O3 -Werror=implicit-function-declaration -Werror=array-bounds -Werror=clobbered -Werror=volatile-register-var -D__DEB_CANARY_CFLAGS_428fca9bc1921c25c5121f9da7815cde__ -fno-omit-frame-pointer -ffile-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -fdebug-prefix-map=/<>=/usr/src/mbedtls-2.28.6-1 -D__DEB_CANARY_CPPFLAGS_428fca9bc1921c25c5121f9da7815cde__ -Wdate-time -D_FORTIFY_SOURCE=3 -Wall -Wextra -Wwrite-strings -Wformat=2 -Wno-format-nonliteral -Wvla -Wlogical-op -Wshadow -Wformat-signedness -Wformat-overflow=2 -Wformat-truncation -Werror -Wmissing-declarations -Wmissing-prototypes -MD -MT library/CMakeFiles/mbedcrypto_static.dir/xtea.c.o -MF CMakeFiles/mbedcrypto_static.dir/xtea.c.o.d -o CMakeFiles/mbedcrypto_static.dir/xtea.c.o -c /<>/library/xtea.c In function ‘mbedtls_timing_get_delay’, inlined from ‘mbedtls_timing_self_test’ at /<>/library/timing.c:427:13: /<>/library/timing.c:334:12: error: ‘ctx.fin_ms’ may be used uninitialized [-Werror=maybe-uninitialized] 334 | if (ctx->fin_ms == 0) { | ~~~^~~~~~~~ /<>/library/timing.c: In function ‘mbedtls_timing_self_test’: /<>/library/timing.c:402:34: note: ‘ctx’ declared here 402 | mbedtls_timing_delay_context ctx; | ^~~ In function ‘mbedtls_timing_get_delay’, inlined from ‘mbedtls_timing_self_test’ at /<>/library/timing.c:427:13: /<>/library/timing.c:344:26: error: ‘ctx.int_ms’ may be used uninitialized [-Werror=maybe-uninitialized] 344 | if (elapsed_ms >= ctx->int_ms) { | ~~~^~~~~~~~ /<>/library/timing.c: In function ‘mbedtls_timing_self_test’: /<>/library/timing.c:402:34: note: ‘ctx’ declared here 402 | mbedtls_timing_delay_context ctx; | ^~~ Signed-off-by: Gianfranco Costamagna Signed-off-by: Gianfranco Costamagna --- library/timing.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/timing.c b/library/timing.c index f2f0a4386b..8bc1b4278b 100644 --- a/library/timing.c +++ b/library/timing.c @@ -399,7 +399,7 @@ int mbedtls_timing_self_test(int verbose) int hardfail = 0; struct mbedtls_timing_hr_time hires; uint32_t a = 0, b = 0; - mbedtls_timing_delay_context ctx; + mbedtls_timing_delay_context ctx = {}; if (verbose != 0) { mbedtls_printf(" TIMING tests note: will take some time!\n"); From f88dd840a28b307799832446b1ef0b4a25661a20 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Wed, 3 Jan 2024 01:41:32 +0100 Subject: [PATCH 2/3] timing.c: use memset to initialize the structure, from Gilles Peskine Signed-off-by: Gianfranco Costamagna Signed-off-by: Gianfranco Costamagna --- library/timing.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/library/timing.c b/library/timing.c index 8bc1b4278b..2777f6f5ea 100644 --- a/library/timing.c +++ b/library/timing.c @@ -399,8 +399,9 @@ int mbedtls_timing_self_test(int verbose) int hardfail = 0; struct mbedtls_timing_hr_time hires; uint32_t a = 0, b = 0; - mbedtls_timing_delay_context ctx = {}; + mbedtls_timing_delay_context ctx; + memset(ctx, 0, sizeof(ctx)); if (verbose != 0) { mbedtls_printf(" TIMING tests note: will take some time!\n"); } From d7768235daf4f36d2a8b3e39b59d49ffea50bb59 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Thu, 18 Jan 2024 12:08:21 +0100 Subject: [PATCH 3/3] Update library/timing.c Co-authored-by: Gilles Peskine Signed-off-by: Gianfranco Costamagna --- library/timing.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/timing.c b/library/timing.c index 2777f6f5ea..b1f72fe1ba 100644 --- a/library/timing.c +++ b/library/timing.c @@ -401,7 +401,7 @@ int mbedtls_timing_self_test(int verbose) uint32_t a = 0, b = 0; mbedtls_timing_delay_context ctx; - memset(ctx, 0, sizeof(ctx)); + memset(&ctx, 0, sizeof(ctx)); if (verbose != 0) { mbedtls_printf(" TIMING tests note: will take some time!\n"); }