[1/3] slirp: Check qemu_socket() return value in udp_listen()

Message ID 1486249715-5513-2-git-send-email-peter.maydell@linaro.org
State Superseded
Headers show
Series
  • slirp: fix 3 easy coverity warnings
Related show

Commit Message

Peter Maydell Feb. 4, 2017, 11:08 p.m.
Check the return value from qemu_socket() rather than trying to
pass it to bind() as an fd argument even if it's negative.
This wouldn't have caused any negative consequences, because
it won't be a valid fd number and the bind call will fail;
but Coverity complains (CID 1005723).

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

---
 slirp/udp.c | 4 ++++
 1 file changed, 4 insertions(+)

-- 
2.1.4

Comments

Philippe Mathieu-Daudé Feb. 11, 2017, 4:15 a.m. | #1
On 02/04/2017 08:08 PM, Peter Maydell wrote:
> Check the return value from qemu_socket() rather than trying to

> pass it to bind() as an fd argument even if it's negative.

> This wouldn't have caused any negative consequences, because

> it won't be a valid fd number and the bind call will fail;

> but Coverity complains (CID 1005723).

>

> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>


Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>


> ---

>  slirp/udp.c | 4 ++++

>  1 file changed, 4 insertions(+)

>

> diff --git a/slirp/udp.c b/slirp/udp.c

> index 93d7224..227d779 100644

> --- a/slirp/udp.c

> +++ b/slirp/udp.c

> @@ -335,6 +335,10 @@ udp_listen(Slirp *slirp, uint32_t haddr, u_int hport, uint32_t laddr,

>  	    return NULL;

>  	}

>  	so->s = qemu_socket(AF_INET,SOCK_DGRAM,0);

> +        if (so->s < 0) {

> +            sofree(so);

> +            return NULL;

> +        }

>  	so->so_expire = curtime + SO_EXPIRE;

>  	insque(so, &slirp->udb);

>

>

Patch hide | download patch | download mbox

diff --git a/slirp/udp.c b/slirp/udp.c
index 93d7224..227d779 100644
--- a/slirp/udp.c
+++ b/slirp/udp.c
@@ -335,6 +335,10 @@  udp_listen(Slirp *slirp, uint32_t haddr, u_int hport, uint32_t laddr,
 	    return NULL;
 	}
 	so->s = qemu_socket(AF_INET,SOCK_DGRAM,0);
+        if (so->s < 0) {
+            sofree(so);
+            return NULL;
+        }
 	so->so_expire = curtime + SO_EXPIRE;
 	insque(so, &slirp->udb);