64 lines
2.3 KiB
Diff
64 lines
2.3 KiB
Diff
|
|
From 6128e82ebe973163d2dd614d31753c88c0c4d645 Mon Sep 17 00:00:00 2001
|
|||
|
|
From: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>
|
|||
|
|
Date: Wed, 21 Sep 2022 10:51:07 -0300
|
|||
|
|
Subject: [PATCH] sunrpc: Suppress GCC -Os warning on user2netname
|
|||
|
|
MIME-Version: 1.0
|
|||
|
|
Content-Type: text/plain; charset=UTF-8
|
|||
|
|
Content-Transfer-Encoding: 8bit
|
|||
|
|
|
|||
|
|
GCC with -Os warns that sprint might overflow:
|
|||
|
|
|
|||
|
|
netname.c: In function ‘user2netname’:
|
|||
|
|
netname.c:51:28: error: ‘%s’ directive writing up to 255 bytes into a
|
|||
|
|
region of size between 239 and 249 [-Werror=format-overflow=]
|
|||
|
|
51 | sprintf (netname, "%s.%d@%s", OPSYS, uid, dfltdom);
|
|||
|
|
| ^~ ~~~~~~~
|
|||
|
|
netname.c:51:3: note: ‘sprintf’ output between 8 and 273 bytes into a
|
|||
|
|
destination of size 256
|
|||
|
|
51 | sprintf (netname, "%s.%d@%s", OPSYS, uid, dfltdom);
|
|||
|
|
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|||
|
|
cc1: all warnings being treated as errors
|
|||
|
|
|
|||
|
|
However the code does test prior the sprintf call that dfltdom plus
|
|||
|
|
the required extra space for OPSYS, uid, and extra character will not
|
|||
|
|
overflow and return 0 instead.
|
|||
|
|
|
|||
|
|
Checked on x86_64-linux-gnu and i686-linux-gnu.
|
|||
|
|
|
|||
|
|
Conflict: NA
|
|||
|
|
Reference: https://sourceware.org/git/?p=glibc.git;a=patch;h=6128e82ebe973163d2dd614d31753c88c0c4d645
|
|||
|
|
|
|||
|
|
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
|
|||
|
|
Tested-by: Carlos O'Donell <carlos@redhat.com>
|
|||
|
|
---
|
|||
|
|
sunrpc/netname.c | 6 ++++++
|
|||
|
|
1 file changed, 6 insertions(+)
|
|||
|
|
|
|||
|
|
diff --git a/sunrpc/netname.c b/sunrpc/netname.c
|
|||
|
|
index bf7f0b81c4..c1d1c43e50 100644
|
|||
|
|
--- a/sunrpc/netname.c
|
|||
|
|
+++ b/sunrpc/netname.c
|
|||
|
|
@@ -20,6 +20,7 @@
|
|||
|
|
#include <string.h>
|
|||
|
|
#include <rpc/rpc.h>
|
|||
|
|
#include <shlib-compat.h>
|
|||
|
|
+#include <libc-diag.h>
|
|||
|
|
|
|||
|
|
#include "nsswitch.h"
|
|||
|
|
|
|||
|
|
@@ -48,7 +49,12 @@ user2netname (char netname[MAXNETNAMELEN + 1], const uid_t uid,
|
|||
|
|
if ((strlen (dfltdom) + OPSYS_LEN + 3 + MAXIPRINT) > (size_t) MAXNETNAMELEN)
|
|||
|
|
return 0;
|
|||
|
|
|
|||
|
|
+ /* GCC with -Os warns that sprint might overflow while handling dfltdom,
|
|||
|
|
+ however the above test does check if an overflow would happen. */
|
|||
|
|
+ DIAG_PUSH_NEEDS_COMMENT;
|
|||
|
|
+ DIAG_IGNORE_Os_NEEDS_COMMENT (8, "-Wformat-overflow");
|
|||
|
|
sprintf (netname, "%s.%d@%s", OPSYS, uid, dfltdom);
|
|||
|
|
+ DIAG_POP_NEEDS_COMMENT;
|
|||
|
|
i = strlen (netname);
|
|||
|
|
if (netname[i - 1] == '.')
|
|||
|
|
netname[i - 1] = '\0';
|
|||
|
|
--
|
|||
|
|
2.23.0
|