aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2018-11-06 15:13:22 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2018-11-10 15:07:53 +0100
commitab8ddaed8dc2eb92ef017b695fcaa37004b0973b (patch)
treee36450ec91cd52636ff980ac36630d0b78938d54
parentb104e38f440d42476a498b022b19c96d695373e9 (diff)
downloadslirp-ab8ddaed8dc2eb92ef017b695fcaa37004b0973b.zip
slirp-ab8ddaed8dc2eb92ef017b695fcaa37004b0973b.tar.gz
slirp-ab8ddaed8dc2eb92ef017b695fcaa37004b0973b.tar.bz2
slirp: Remove code that handles socreate() failure
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>
-rw-r--r--ip_icmp.c3
-rw-r--r--slirp.c3
-rw-r--r--socket.c3
-rw-r--r--tcp_input.c3
-rw-r--r--tcp_subr.c5
-rw-r--r--udp.c6
-rw-r--r--udp6.c3
7 files changed, 2 insertions, 24 deletions
diff --git a/ip_icmp.c b/ip_icmp.c
index a032cb4..a1f46bd 100644
--- a/ip_icmp.c
+++ b/ip_icmp.c
@@ -161,8 +161,7 @@ void 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;
}
diff --git a/slirp.c b/slirp.c
index 6be44ba..79b52e7 100644
--- a/slirp.c
+++ b/slirp.c
@@ -1462,9 +1462,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)
diff --git a/socket.c b/socket.c
index 598d815..f764a88 100644
--- a/socket.c
+++ b/socket.c
@@ -713,9 +713,6 @@ struct socket *tcp_listen(Slirp *slirp, uint32_t haddr, u_int hport,
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) {
diff --git a/tcp_input.c b/tcp_input.c
index f4d4b52..d8ea3cc 100644
--- a/tcp_input.c
+++ b/tcp_input.c
@@ -430,8 +430,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;
diff --git a/tcp_subr.c b/tcp_subr.c
index bad14fd..e6e60e1 100644
--- a/tcp_subr.c
+++ b/tcp_subr.c
@@ -467,11 +467,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;
diff --git a/udp.c b/udp.c
index 8efaa6d..58efe12 100644
--- a/udp.c
+++ b/udp.c
@@ -169,9 +169,6 @@ void 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)));
@@ -322,9 +319,6 @@ struct socket *udp_listen(Slirp *slirp, uint32_t haddr, u_int hport,
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);
diff --git a/udp6.c b/udp6.c
index ffde264..91021d5 100644
--- a/udp6.c
+++ b/udp6.c
@@ -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)));