diff options
author | Markus Armbruster <armbru@redhat.com> | 2011-11-16 15:45:59 +0100 |
---|---|---|
committer | Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> | 2011-11-22 11:11:23 +0000 |
commit | e30e5eb6136aa3311dad4ca90f6546e05ae98f92 (patch) | |
tree | edf136192a0ba716ae2e4660f9d57c4f07be71b6 /net | |
parent | 40897c9c160393df922dfdb59cfa210048d3071d (diff) |
slirp: Clean up net_slirp_hostfwd_remove()'s use of get_str_sep()
get_str_sep() can fail, but net_slirp_hostfwd_remove() doesn't check.
Works, because it initializes buf[] to "", which get_str_sep() doesn't
touch when it fails. Coverity doesn't like it, and neither do I.
Change it to work exactly like slirp_hostfwd().
Acked-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/slirp.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/net/slirp.c b/net/slirp.c index c6cda5dcb2..6646ecb1c8 100644 --- a/net/slirp.c +++ b/net/slirp.c @@ -305,7 +305,7 @@ void net_slirp_hostfwd_remove(Monitor *mon, const QDict *qdict) { struct in_addr host_addr = { .s_addr = INADDR_ANY }; int host_port; - char buf[256] = ""; + char buf[256]; const char *src_str, *p; SlirpState *s; int is_udp = 0; @@ -325,11 +325,10 @@ void net_slirp_hostfwd_remove(Monitor *mon, const QDict *qdict) return; } - if (!src_str || !src_str[0]) - goto fail_syntax; - p = src_str; - get_str_sep(buf, sizeof(buf), &p, ':'); + if (!p || get_str_sep(buf, sizeof(buf), &p, ':') < 0) { + goto fail_syntax; + } if (!strcmp(buf, "tcp") || buf[0] == '\0') { is_udp = 0; |