Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/lib/libsa libsa/printf: Do not fetch long va_arg as long...



details:   https://anonhg.NetBSD.org/src/rev/0984ff5c7269
branches:  trunk
changeset: 376057:0984ff5c7269
user:      rin <rin%NetBSD.org@localhost>
date:      Mon May 29 03:56:52 2023 +0000

description:
libsa/printf: Do not fetch long va_arg as long long.

This does real harm iff all of the following conditions are satisfied:

(1) On ILP32 architectures.
(2) Both LIBSA_PRINTF_LONGLONG_SUPPORT and LIBSA_PRINTF_WIDTH_SUPPORT
    compile-time options are enabled.
(3) Width field is used with 'l' modifier.

This is an implicit-fallthrough bug, but unfortunately, GCC 10.4 cannot
find this out somehow...

XXX
Pull up to netbsd-10 and netbsd-9. netbsd-8 is not affected.

diffstat:

 sys/lib/libsa/subr_prf.c |  3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diffs (17 lines):

diff -r 6d53b1c30c67 -r 0984ff5c7269 sys/lib/libsa/subr_prf.c
--- a/sys/lib/libsa/subr_prf.c  Sun May 28 21:42:40 2023 +0000
+++ b/sys/lib/libsa/subr_prf.c  Mon May 29 03:56:52 2023 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: subr_prf.c,v 1.29 2020/06/06 15:45:47 thorpej Exp $    */
+/*     $NetBSD: subr_prf.c,v 1.30 2023/05/29 03:56:52 rin Exp $        */
 
 /*-
  * Copyright (c) 1993
@@ -209,6 +209,7 @@ reswitch:
                                        break;
                                ++fmt;
                        }
+                       goto reswitch;
 #endif
                case 'l':
 #ifdef LIBSA_PRINTF_LONGLONG_SUPPORT



Home | Main Index | Thread Index | Old Index