qemu-trivial.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-trivial] [PATCH] slirp: workaround gcc __warn_memset_zero_len warnings
@ 2012-02-23 20:29 Alon Levy
  2012-02-24  8:29 ` Stefan Hajnoczi
  0 siblings, 1 reply; 4+ messages in thread
From: Alon Levy @ 2012-02-23 20:29 UTC (permalink / raw)
  To: qemu-trivial

Fixes __warn_memset_zero_len warnings with gcc --version
gcc (GCC) 4.7.0 20120208 (Red Hat 4.7.0-0.12)

Caused by an overly protective memset check to avoid transposition of
the fill value and length parameters.

Signed-off-by: Alon Levy <alevy@redhat.com>
---
 slirp/misc.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/slirp/misc.c b/slirp/misc.c
index 3432fbf..17c21e2 100644
--- a/slirp/misc.c
+++ b/slirp/misc.c
@@ -358,7 +358,9 @@ void slirp_connection_info(Slirp *slirp, Monitor *mon)
             dst_port = so->so_fport;
         }
         n = snprintf(buf, sizeof(buf), "  TCP[%s]", state);
-        memset(&buf[n], ' ', 19 - n);
+        if (n < 19) {
+            memset(&buf[n], ' ', 19 - n);
+        }
         buf[19] = 0;
         monitor_printf(mon, "%s %3d %15s %5d ", buf, so->s,
                        src.sin_addr.s_addr ? inet_ntoa(src.sin_addr) : "*",
@@ -383,7 +385,9 @@ void slirp_connection_info(Slirp *slirp, Monitor *mon)
             dst_addr = so->so_faddr;
             dst_port = so->so_fport;
         }
-        memset(&buf[n], ' ', 19 - n);
+        if (n < 19) {
+            memset(&buf[n], ' ', 19 - n);
+        }
         buf[19] = 0;
         monitor_printf(mon, "%s %3d %15s %5d ", buf, so->s,
                        src.sin_addr.s_addr ? inet_ntoa(src.sin_addr) : "*",
-- 
1.7.9.1



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [Qemu-trivial] [PATCH] slirp: workaround gcc __warn_memset_zero_len warnings
  2012-02-23 20:29 [Qemu-trivial] [PATCH] slirp: workaround gcc __warn_memset_zero_len warnings Alon Levy
@ 2012-02-24  8:29 ` Stefan Hajnoczi
  2012-02-24 10:18   ` Alon Levy
  2012-02-24 11:33   ` [Qemu-trivial] [PATCH] slirp/misc: fix " Alon Levy
  0 siblings, 2 replies; 4+ messages in thread
From: Stefan Hajnoczi @ 2012-02-24  8:29 UTC (permalink / raw)
  To: Alon Levy; +Cc: qemu-trivial

On Thu, Feb 23, 2012 at 10:29:42PM +0200, Alon Levy wrote:
> --- a/slirp/misc.c
> +++ b/slirp/misc.c
> @@ -358,7 +358,9 @@ void slirp_connection_info(Slirp *slirp, Monitor *mon)
>              dst_port = so->so_fport;
>          }
>          n = snprintf(buf, sizeof(buf), "  TCP[%s]", state);
> -        memset(&buf[n], ' ', 19 - n);
> +        if (n < 19) {
> +            memset(&buf[n], ' ', 19 - n);
> +        }
>          buf[19] = 0;
>          monitor_printf(mon, "%s %3d %15s %5d ", buf, so->s,
>                         src.sin_addr.s_addr ? inet_ntoa(src.sin_addr) : "*",

This whole memset approach is not necessary.  Let's drop this and use a
left-justified format string to do the space padding.  Feel free to try
this and send the patch:

diff --git a/slirp/misc.c b/slirp/misc.c
index 3432fbf..0308a62 100644
--- a/slirp/misc.c
+++ b/slirp/misc.c
@@ -333,7 +333,6 @@ void slirp_connection_info(Slirp *slirp, Monitor *mon)
     struct socket *so;
     const char *state;
     char buf[20];
-    int n;
 
     monitor_printf(mon, "  Protocol[State]    FD  Source Address  Port   "
                         "Dest. Address  Port RecvQ SendQ\n");
@@ -357,10 +356,8 @@ void slirp_connection_info(Slirp *slirp, Monitor *mon)
             dst_addr = so->so_faddr;
             dst_port = so->so_fport;
         }
-        n = snprintf(buf, sizeof(buf), "  TCP[%s]", state);
-        memset(&buf[n], ' ', 19 - n);
-        buf[19] = 0;
-        monitor_printf(mon, "%s %3d %15s %5d ", buf, so->s,
+        snprintf(buf, sizeof(buf), "  TCP[%s]", state);
+        monitor_printf(mon, "%-19s %3d %15s %5d ", buf, so->s,
                        src.sin_addr.s_addr ? inet_ntoa(src.sin_addr) : "*",
                        ntohs(src.sin_port));
         monitor_printf(mon, "%15s %5d %5d %5d\n",
@@ -370,22 +367,20 @@ void slirp_connection_info(Slirp *slirp, Monitor *mon)
 
     for (so = slirp->udb.so_next; so != &slirp->udb; so = so->so_next) {
         if (so->so_state & SS_HOSTFWD) {
-            n = snprintf(buf, sizeof(buf), "  UDP[HOST_FORWARD]");
+            snprintf(buf, sizeof(buf), "  UDP[HOST_FORWARD]");
             src_len = sizeof(src);
             getsockname(so->s, (struct sockaddr *)&src, &src_len);
             dst_addr = so->so_laddr;
             dst_port = so->so_lport;
         } else {
-            n = snprintf(buf, sizeof(buf), "  UDP[%d sec]",
+            snprintf(buf, sizeof(buf), "  UDP[%d sec]",
                          (so->so_expire - curtime) / 1000);
             src.sin_addr = so->so_laddr;
             src.sin_port = so->so_lport;
             dst_addr = so->so_faddr;
             dst_port = so->so_fport;
         }
-        memset(&buf[n], ' ', 19 - n);
-        buf[19] = 0;
-        monitor_printf(mon, "%s %3d %15s %5d ", buf, so->s,
+        monitor_printf(mon, "%-19s %3d %15s %5d ", buf, so->s,
                        src.sin_addr.s_addr ? inet_ntoa(src.sin_addr) : "*",
                        ntohs(src.sin_port));
         monitor_printf(mon, "%15s %5d %5d %5d\n",
@@ -394,13 +389,11 @@ void slirp_connection_info(Slirp *slirp, Monitor *mon)
     }
 
     for (so = slirp->icmp.so_next; so != &slirp->icmp; so = so->so_next) {
-        n = snprintf(buf, sizeof(buf), "  ICMP[%d sec]",
+        snprintf(buf, sizeof(buf), "  ICMP[%d sec]",
                      (so->so_expire - curtime) / 1000);
         src.sin_addr = so->so_laddr;
         dst_addr = so->so_faddr;
-        memset(&buf[n], ' ', 19 - n);
-        buf[19] = 0;
-        monitor_printf(mon, "%s %3d %15s  -    ", buf, so->s,
+        monitor_printf(mon, "%-19s %3d %15s  -    ", buf, so->s,
                        src.sin_addr.s_addr ? inet_ntoa(src.sin_addr) : "*");
         monitor_printf(mon, "%15s  -    %5d %5d\n", inet_ntoa(dst_addr),
                        so->so_rcv.sb_cc, so->so_snd.sb_cc);


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [Qemu-trivial] [PATCH] slirp: workaround gcc __warn_memset_zero_len warnings
  2012-02-24  8:29 ` Stefan Hajnoczi
@ 2012-02-24 10:18   ` Alon Levy
  2012-02-24 11:33   ` [Qemu-trivial] [PATCH] slirp/misc: fix " Alon Levy
  1 sibling, 0 replies; 4+ messages in thread
From: Alon Levy @ 2012-02-24 10:18 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: qemu-trivial

On Fri, Feb 24, 2012 at 08:29:54AM +0000, Stefan Hajnoczi wrote:
> On Thu, Feb 23, 2012 at 10:29:42PM +0200, Alon Levy wrote:
> > --- a/slirp/misc.c
> > +++ b/slirp/misc.c
> > @@ -358,7 +358,9 @@ void slirp_connection_info(Slirp *slirp, Monitor *mon)
> >              dst_port = so->so_fport;
> >          }
> >          n = snprintf(buf, sizeof(buf), "  TCP[%s]", state);
> > -        memset(&buf[n], ' ', 19 - n);
> > +        if (n < 19) {
> > +            memset(&buf[n], ' ', 19 - n);
> > +        }
> >          buf[19] = 0;
> >          monitor_printf(mon, "%s %3d %15s %5d ", buf, so->s,
> >                         src.sin_addr.s_addr ? inet_ntoa(src.sin_addr) : "*",
> 
> This whole memset approach is not necessary.  Let's drop this and use a
> left-justified format string to do the space padding.  Feel free to try
> this and send the patch:
> 

Haven't tried yet, but looks better just by reading.

> diff --git a/slirp/misc.c b/slirp/misc.c
> index 3432fbf..0308a62 100644
> --- a/slirp/misc.c
> +++ b/slirp/misc.c
> @@ -333,7 +333,6 @@ void slirp_connection_info(Slirp *slirp, Monitor *mon)
>      struct socket *so;
>      const char *state;
>      char buf[20];
> -    int n;
>  
>      monitor_printf(mon, "  Protocol[State]    FD  Source Address  Port   "
>                          "Dest. Address  Port RecvQ SendQ\n");
> @@ -357,10 +356,8 @@ void slirp_connection_info(Slirp *slirp, Monitor *mon)
>              dst_addr = so->so_faddr;
>              dst_port = so->so_fport;
>          }
> -        n = snprintf(buf, sizeof(buf), "  TCP[%s]", state);
> -        memset(&buf[n], ' ', 19 - n);
> -        buf[19] = 0;
> -        monitor_printf(mon, "%s %3d %15s %5d ", buf, so->s,
> +        snprintf(buf, sizeof(buf), "  TCP[%s]", state);
> +        monitor_printf(mon, "%-19s %3d %15s %5d ", buf, so->s,
>                         src.sin_addr.s_addr ? inet_ntoa(src.sin_addr) : "*",
>                         ntohs(src.sin_port));
>          monitor_printf(mon, "%15s %5d %5d %5d\n",
> @@ -370,22 +367,20 @@ void slirp_connection_info(Slirp *slirp, Monitor *mon)
>  
>      for (so = slirp->udb.so_next; so != &slirp->udb; so = so->so_next) {
>          if (so->so_state & SS_HOSTFWD) {
> -            n = snprintf(buf, sizeof(buf), "  UDP[HOST_FORWARD]");
> +            snprintf(buf, sizeof(buf), "  UDP[HOST_FORWARD]");
>              src_len = sizeof(src);
>              getsockname(so->s, (struct sockaddr *)&src, &src_len);
>              dst_addr = so->so_laddr;
>              dst_port = so->so_lport;
>          } else {
> -            n = snprintf(buf, sizeof(buf), "  UDP[%d sec]",
> +            snprintf(buf, sizeof(buf), "  UDP[%d sec]",
>                           (so->so_expire - curtime) / 1000);
>              src.sin_addr = so->so_laddr;
>              src.sin_port = so->so_lport;
>              dst_addr = so->so_faddr;
>              dst_port = so->so_fport;
>          }
> -        memset(&buf[n], ' ', 19 - n);
> -        buf[19] = 0;
> -        monitor_printf(mon, "%s %3d %15s %5d ", buf, so->s,
> +        monitor_printf(mon, "%-19s %3d %15s %5d ", buf, so->s,
>                         src.sin_addr.s_addr ? inet_ntoa(src.sin_addr) : "*",
>                         ntohs(src.sin_port));
>          monitor_printf(mon, "%15s %5d %5d %5d\n",
> @@ -394,13 +389,11 @@ void slirp_connection_info(Slirp *slirp, Monitor *mon)
>      }
>  
>      for (so = slirp->icmp.so_next; so != &slirp->icmp; so = so->so_next) {
> -        n = snprintf(buf, sizeof(buf), "  ICMP[%d sec]",
> +        snprintf(buf, sizeof(buf), "  ICMP[%d sec]",
>                       (so->so_expire - curtime) / 1000);
>          src.sin_addr = so->so_laddr;
>          dst_addr = so->so_faddr;
> -        memset(&buf[n], ' ', 19 - n);
> -        buf[19] = 0;
> -        monitor_printf(mon, "%s %3d %15s  -    ", buf, so->s,
> +        monitor_printf(mon, "%-19s %3d %15s  -    ", buf, so->s,
>                         src.sin_addr.s_addr ? inet_ntoa(src.sin_addr) : "*");
>          monitor_printf(mon, "%15s  -    %5d %5d\n", inet_ntoa(dst_addr),
>                         so->so_rcv.sb_cc, so->so_snd.sb_cc);


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Qemu-trivial] [PATCH] slirp/misc: fix gcc __warn_memset_zero_len warnings
  2012-02-24  8:29 ` Stefan Hajnoczi
  2012-02-24 10:18   ` Alon Levy
@ 2012-02-24 11:33   ` Alon Levy
  1 sibling, 0 replies; 4+ messages in thread
From: Alon Levy @ 2012-02-24 11:33 UTC (permalink / raw)
  To: qemu-trivial

By removing memset altogether (Patch from Stefan Hajnoczi, tested
compile only by me).

Signed-off-by: Alon Levy <alevy@redhat.com>
---
 slirp/misc.c |   21 +++++++--------------
 1 files changed, 7 insertions(+), 14 deletions(-)

diff --git a/slirp/misc.c b/slirp/misc.c
index 3432fbf..0308a62 100644
--- a/slirp/misc.c
+++ b/slirp/misc.c
@@ -333,7 +333,6 @@ void slirp_connection_info(Slirp *slirp, Monitor *mon)
     struct socket *so;
     const char *state;
     char buf[20];
-    int n;
 
     monitor_printf(mon, "  Protocol[State]    FD  Source Address  Port   "
                         "Dest. Address  Port RecvQ SendQ\n");
@@ -357,10 +356,8 @@ void slirp_connection_info(Slirp *slirp, Monitor *mon)
             dst_addr = so->so_faddr;
             dst_port = so->so_fport;
         }
-        n = snprintf(buf, sizeof(buf), "  TCP[%s]", state);
-        memset(&buf[n], ' ', 19 - n);
-        buf[19] = 0;
-        monitor_printf(mon, "%s %3d %15s %5d ", buf, so->s,
+        snprintf(buf, sizeof(buf), "  TCP[%s]", state);
+        monitor_printf(mon, "%-19s %3d %15s %5d ", buf, so->s,
                        src.sin_addr.s_addr ? inet_ntoa(src.sin_addr) : "*",
                        ntohs(src.sin_port));
         monitor_printf(mon, "%15s %5d %5d %5d\n",
@@ -370,22 +367,20 @@ void slirp_connection_info(Slirp *slirp, Monitor *mon)
 
     for (so = slirp->udb.so_next; so != &slirp->udb; so = so->so_next) {
         if (so->so_state & SS_HOSTFWD) {
-            n = snprintf(buf, sizeof(buf), "  UDP[HOST_FORWARD]");
+            snprintf(buf, sizeof(buf), "  UDP[HOST_FORWARD]");
             src_len = sizeof(src);
             getsockname(so->s, (struct sockaddr *)&src, &src_len);
             dst_addr = so->so_laddr;
             dst_port = so->so_lport;
         } else {
-            n = snprintf(buf, sizeof(buf), "  UDP[%d sec]",
+            snprintf(buf, sizeof(buf), "  UDP[%d sec]",
                          (so->so_expire - curtime) / 1000);
             src.sin_addr = so->so_laddr;
             src.sin_port = so->so_lport;
             dst_addr = so->so_faddr;
             dst_port = so->so_fport;
         }
-        memset(&buf[n], ' ', 19 - n);
-        buf[19] = 0;
-        monitor_printf(mon, "%s %3d %15s %5d ", buf, so->s,
+        monitor_printf(mon, "%-19s %3d %15s %5d ", buf, so->s,
                        src.sin_addr.s_addr ? inet_ntoa(src.sin_addr) : "*",
                        ntohs(src.sin_port));
         monitor_printf(mon, "%15s %5d %5d %5d\n",
@@ -394,13 +389,11 @@ void slirp_connection_info(Slirp *slirp, Monitor *mon)
     }
 
     for (so = slirp->icmp.so_next; so != &slirp->icmp; so = so->so_next) {
-        n = snprintf(buf, sizeof(buf), "  ICMP[%d sec]",
+        snprintf(buf, sizeof(buf), "  ICMP[%d sec]",
                      (so->so_expire - curtime) / 1000);
         src.sin_addr = so->so_laddr;
         dst_addr = so->so_faddr;
-        memset(&buf[n], ' ', 19 - n);
-        buf[19] = 0;
-        monitor_printf(mon, "%s %3d %15s  -    ", buf, so->s,
+        monitor_printf(mon, "%-19s %3d %15s  -    ", buf, so->s,
                        src.sin_addr.s_addr ? inet_ntoa(src.sin_addr) : "*");
         monitor_printf(mon, "%15s  -    %5d %5d\n", inet_ntoa(dst_addr),
                        so->so_rcv.sb_cc, so->so_snd.sb_cc);
-- 
1.7.9.1



^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-02-24 11:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-23 20:29 [Qemu-trivial] [PATCH] slirp: workaround gcc __warn_memset_zero_len warnings Alon Levy
2012-02-24  8:29 ` Stefan Hajnoczi
2012-02-24 10:18   ` Alon Levy
2012-02-24 11:33   ` [Qemu-trivial] [PATCH] slirp/misc: fix " Alon Levy

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 NNTP newsgroup(s).