* [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).