]> www.infradead.org Git - users/dwmw2/qemu.git/commitdiff
slirp: Remove code that handles socreate() failure
authorPeter Maydell <peter.maydell@linaro.org>
Tue, 6 Nov 2018 15:13:22 +0000 (15:13 +0000)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Sat, 10 Nov 2018 14:07:53 +0000 (15:07 +0100)
Now that socreate() can never fail, we can remove the code
that was trying to handle that situation.

In particular this removes code in tcp_connect() that
provoked Coverity to complain (CID 1005724): in
 closesocket(accept(inso->s, (struct sockaddr *)&addr, &addrlen));
if the accept() call fails then we pass closesocket() -1
instead of a valid file descriptor.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
slirp/ip_icmp.c
slirp/slirp.c
slirp/socket.c
slirp/tcp_input.c
slirp/tcp_subr.c
slirp/udp.c
slirp/udp6.c

index da100d1f55fe652529dab210680c8d980b9e7312..9210eef3f35576793895631cd90269cbff5fa63a 100644 (file)
@@ -160,7 +160,7 @@ icmp_input(struct mbuf *m, int hlen)
     } else {
       struct socket *so;
       struct sockaddr_storage addr;
-      if ((so = socreate(slirp)) == NULL) goto freeit;
+      so = socreate(slirp);
       if (icmp_send(so, m, hlen) == 0) {
         return;
       }
index 3c3c03b22f7e64fec64d7e84e4763f34b13e6e7d..322edf51eb8abb8056858e1f2f63a2c67487f6a3 100644 (file)
@@ -1477,9 +1477,6 @@ static int slirp_state_load(QEMUFile *f, void *opaque, int version_id)
         int ret;
         struct socket *so = socreate(slirp);
 
-        if (!so)
-            return -ENOMEM;
-
         ret = vmstate_load_state(f, &vmstate_slirp_socket, so, version_id);
 
         if (ret < 0)
index 35a9a14565931018015825dd7c3310dedf6ce2d6..c01d8696afb64b87ccc6b2f4f2ba5062be20921f 100644 (file)
@@ -713,9 +713,6 @@ tcp_listen(Slirp *slirp, uint32_t haddr, u_int hport, uint32_t laddr,
        DEBUG_ARG("flags = %x", flags);
 
        so = socreate(slirp);
-       if (!so) {
-         return NULL;
-       }
 
        /* Don't tcp_attach... we don't need so_snd nor so_rcv */
        if ((so->so_tcpcb = tcp_newtcpcb(so)) == NULL) {
index 4f79c95fdb4aa02b8c56578a2992bc69c6f89682..d073ef952561e819c1880e69b61e130c040f6650 100644 (file)
@@ -429,8 +429,7 @@ findso:
          if ((tiflags & (TH_SYN|TH_FIN|TH_RST|TH_URG|TH_ACK)) != TH_SYN)
            goto dropwithreset;
 
-         if ((so = socreate(slirp)) == NULL)
-           goto dropwithreset;
+          so = socreate(slirp);
          if (tcp_attach(so) < 0) {
             g_free(so); /* Not sofree (if it failed, it's not insqued) */
             goto dropwithreset;
index 0270c89ae3abb6d4d215f622a70f468bd351b018..fa61349cbb065e3f89b4758a3939d8730519a0e8 100644 (file)
@@ -469,11 +469,6 @@ void tcp_connect(struct socket *inso)
         so = inso;
     } else {
         so = socreate(slirp);
-        if (so == NULL) {
-            /* If it failed, get rid of the pending connection */
-            closesocket(accept(inso->s, (struct sockaddr *)&addr, &addrlen));
-            return;
-        }
         if (tcp_attach(so) < 0) {
             g_free(so); /* NOT sofree */
             return;
index e5bf065bf23effe955cc10aa96b23c12d6452c26..c47870a61b453bb7004d369e4000dc500b49e7ad 100644 (file)
@@ -171,9 +171,6 @@ udp_input(register struct mbuf *m, int iphlen)
           * create one
           */
          so = socreate(slirp);
-         if (!so) {
-             goto bad;
-         }
          if (udp_attach(so, AF_INET) == -1) {
            DEBUG_MISC((dfd," udp_attach errno = %d-%s\n",
                        errno,strerror(errno)));
@@ -331,9 +328,6 @@ udp_listen(Slirp *slirp, uint32_t haddr, u_int hport, uint32_t laddr,
        socklen_t addrlen = sizeof(struct sockaddr_in);
 
        so = socreate(slirp);
-       if (!so) {
-           return NULL;
-       }
        so->s = qemu_socket(AF_INET,SOCK_DGRAM,0);
         if (so->s < 0) {
             sofree(so);
index 7c4a6b003a832d63db4b02bb065b3738e6a18e63..986010f0d3a3b81fc295010c6973cde2541fb580 100644 (file)
@@ -91,9 +91,6 @@ void udp6_input(struct mbuf *m)
     if (so == NULL) {
         /* If there's no socket for this packet, create one. */
         so = socreate(slirp);
-        if (!so) {
-            goto bad;
-        }
         if (udp_attach(so, AF_INET6) == -1) {
             DEBUG_MISC((dfd, " udp6_attach errno = %d-%s\n",
                         errno, strerror(errno)));