[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 2/5] sockets: don't block IPv4 clients when liste
From: |
Daniel P. Berrange |
Subject: |
[Qemu-devel] [PATCH v3 2/5] sockets: don't block IPv4 clients when listening on "::" |
Date: |
Thu, 1 Jun 2017 09:29:32 +0100 |
When inet_parse() parses the hostname, it is forcing the
has_ipv6 && ipv6 flags if the address contains a ":". This
means that if the user had set the ipv4=on flag, to try to
restrict the listener to just ipv4, an error would not have
been raised. eg
-incoming tcp:[::]:9000,ipv4
should have raised an error because listening for IPv4
on "::" is a non-sensical combination. With this removed,
we now call getaddrinfo() on "::" passing PF_INET and
so getaddrinfo reports an error about the hostname being
incompatible with the requested protocol:
qemu-system-x86_64: -incoming tcp:[::]:9000,ipv4: address resolution
failed for :::9000: Address family for hostname not supported
Likewise it is explicitly setting the has_ipv4 & ipv4
flags when the address contains only digits + '.'. This
has no ill-effect, but also has no benefit, so is removed.
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Daniel P. Berrange <address@hidden>
---
util/qemu-sockets.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
index 8720097..81bc8de 100644
--- a/util/qemu-sockets.c
+++ b/util/qemu-sockets.c
@@ -618,16 +618,12 @@ int inet_parse(InetSocketAddress *addr, const char *str,
Error **errp)
error_setg(errp, "error parsing IPv6 address '%s'", str);
return -1;
}
- addr->ipv6 = addr->has_ipv6 = true;
} else {
/* hostname or IPv4 addr */
if (sscanf(str, "%64[^:]:%32[^,]%n", host, port, &pos) != 2) {
error_setg(errp, "error parsing address '%s'", str);
return -1;
}
- if (host[strspn(host, "0123456789.")] == '\0') {
- addr->ipv4 = addr->has_ipv4 = true;
- }
}
addr->host = g_strdup(host);
--
2.9.3
- [Qemu-devel] [PATCH v3 0/5] Fix handling of IPv4/IPv6 dual stack, Daniel P. Berrange, 2017/06/01
- [Qemu-devel] [PATCH v3 1/5] sockets: ensure we can bind to both ipv4 & ipv6 separately, Daniel P. Berrange, 2017/06/01
- [Qemu-devel] [PATCH v3 2/5] sockets: don't block IPv4 clients when listening on "::",
Daniel P. Berrange <=
- [Qemu-devel] [PATCH v3 3/5] sockets: ensure we don't accept IPv4 clients when IPv4 is disabled, Daniel P. Berrange, 2017/06/01
- [Qemu-devel] [PATCH v3 4/5] io: preserve ipv4/ipv6 flags when resolving InetSocketAddress, Daniel P. Berrange, 2017/06/01
- [Qemu-devel] [PATCH v3 5/5] tests: add functional test validating ipv4/ipv6 address flag handling, Daniel P. Berrange, 2017/06/01
- Re: [Qemu-devel] [PATCH v3 0/5] Fix handling of IPv4/IPv6 dual stack, Gerd Hoffmann, 2017/06/06
- Re: [Qemu-devel] [PATCH v3 0/5] Fix handling of IPv4/IPv6 dual stack, Vlad Yasevich, 2017/06/10