public inbox for glibc-cvs@sourceware.org
help / color / mirror / Atom feed
From: Adhemerval Zanella <azanella@sourceware.org>
To: glibc-cvs@sourceware.org
Subject: [glibc/release/2.36/master] sunrpc: Suppress GCC -Os warning on user2netname
Date: Thu, 29 Dec 2022 12:53:13 +0000 (GMT)	[thread overview]
Message-ID: <20221229125313.61C693858C66@sourceware.org> (raw)

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=997d844a97b0478a3a7f9e7d7027c7431edbb51d

commit 997d844a97b0478a3a7f9e7d7027c7431edbb51d
Author: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>
Date:   Wed Sep 21 10:51:07 2022 -0300

    sunrpc: Suppress GCC -Os warning on user2netname
    
    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.
    Reviewed-by: Carlos O'Donell <carlos@redhat.com>
    Tested-by: Carlos O'Donell <carlos@redhat.com>
    
    (cherry picked from commit 6128e82ebe973163d2dd614d31753c88c0c4d645)

Diff:
---
 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';

                 reply	other threads:[~2022-12-29 12:53 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221229125313.61C693858C66@sourceware.org \
    --to=azanella@sourceware.org \
    --cc=glibc-cvs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).