[PATCH] sunrpc: use snprintf to guard against buffer overflow
Philipp Tomsich
philipp.tomsich@vrull.eu
Wed Dec 2 19:04:11 GMT 2020
GCC11 has improved detection of buffer overflows detectable through the analysis
of format strings and parameters, which identifies the following issue:
netname.c:52:28: error: '%s' directive writing up to 255 bytes into a region
of size between 239 and 249 [-Werror=format-overflow=]
This rewrites user2netname() to use snprintf to guard against overflows.
---
sunrpc/netname.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/sunrpc/netname.c b/sunrpc/netname.c
index 24ee519..62e644f 100644
--- a/sunrpc/netname.c
+++ b/sunrpc/netname.c
@@ -49,8 +49,10 @@ user2netname (char netname[MAXNETNAMELEN + 1], const uid_t uid,
if ((strlen (dfltdom) + OPSYS_LEN + 3 + MAXIPRINT) > (size_t) MAXNETNAMELEN)
return 0;
- sprintf (netname, "%s.%d@%s", OPSYS, uid, dfltdom);
- i = strlen (netname);
+ i = snprintf (netname, MAXNETNAMELEN + 1, "%s.%d@%s", OPSYS, uid, dfltdom);
+ if (i > (size_t) MAXNETNAMELEN)
+ return 0;
+
if (netname[i - 1] == '.')
netname[i - 1] = '\0';
return 1;
--
1.8.3.1
More information about the Libc-alpha
mailing list