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
commit4ded9bb54ceefeb68e766fe9aafc10de934c4501 (patch)
tree1dfac08e3ce18c48ea46626f3383f9212d9de0d7
parent84ec9bfaf239b61bac3e43f708772937401e0e63 (diff)
downloadqemu-4ded9bb54ceefeb68e766fe9aafc10de934c4501.zip
qemu-4ded9bb54ceefeb68e766fe9aafc10de934c4501.tar.gz
qemu-4ded9bb54ceefeb68e766fe9aafc10de934c4501.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--slirp/ip_icmp.c2
-rw-r--r--slirp/slirp.c3
-rw-r--r--slirp/socket.c3
-rw-r--r--slirp/tcp_input.c3
-rw-r--r--slirp/tcp_subr.c5
-rw-r--r--slirp/udp.c6
-rw-r--r--slirp/udp6.c3
7 files changed, 2 insertions, 23 deletions
diff --git a/slirp/ip_icmp.c b/slirp/ip_icmp.c
index da100d1..9210eef 100644
--- a/slirp/ip_icmp.c
+++ b/slirp/ip_icmp.c
@@ -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;
}
diff --git a/slirp/slirp.c b/slirp/slirp.c
index 3c3c03b..322edf5 100644
--- a/slirp/slirp.c
+++ b/slirp/slirp.c
@@ -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)
diff --git a/slirp/socket.c b/slirp/socket.c
index 35a9a14..c01d869 100644
--- a/slirp/socket.c
+++ b/slirp/socket.c
@@ -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) {
diff --git a/slirp/tcp_input.c b/slirp/tcp_input.c
index 4f79c95..d073ef9 100644
--- a/slirp/tcp_input.c
+++ b/slirp/tcp_input.c
@@ -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;
diff --git a/slirp/tcp_subr.c b/slirp/tcp_subr.c
index 0270c89..fa61349 100644
--- a/slirp/tcp_subr.c
+++ b/slirp/tcp_subr.c
@@ -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;
diff --git a/slirp/udp.c b/slirp/udp.c
index e5bf065..c47870a 100644
--- a/slirp/udp.c
+++ b/slirp/udp.c
@@ -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);
diff --git a/slirp/udp6.c b/slirp/udp6.c
index 7c4a6b0..986010f 100644
--- a/slirp/udp6.c
+++ b/slirp/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)));