[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v2 2/5] sockets: don't block IPv4 clients when listen
From: |
Daniel P. Berrange |
Subject: |
[Qemu-devel] [PULL v2 2/5] sockets: don't block IPv4 clients when listening on "::" |
Date: |
Wed, 12 Jul 2017 17:18:27 +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.
Acked-by: Gerd Hoffmann <address@hidden>
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 4c2f84b..f4ddcaf 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.4
- [Qemu-devel] [PULL v2 0/5] Merge sockets 2017/07/11, Daniel P. Berrange, 2017/07/12
- [Qemu-devel] [PULL v2 1/5] sockets: ensure we can bind to both ipv4 & ipv6 separately, Daniel P. Berrange, 2017/07/12
- [Qemu-devel] [PULL v2 2/5] sockets: don't block IPv4 clients when listening on "::",
Daniel P. Berrange <=
- [Qemu-devel] [PULL v2 4/5] io: preserve ipv4/ipv6 flags when resolving InetSocketAddress, Daniel P. Berrange, 2017/07/12
- [Qemu-devel] [PULL v2 3/5] sockets: ensure we don't accept IPv4 clients when IPv4 is disabled, Daniel P. Berrange, 2017/07/12
- [Qemu-devel] [PULL v2 5/5] tests: add functional test validating ipv4/ipv6 address flag handling, Daniel P. Berrange, 2017/07/12
- Re: [Qemu-devel] [PULL v2 0/5] Merge sockets 2017/07/11, Philippe Mathieu-Daudé, 2017/07/12
- Re: [Qemu-devel] [PULL v2 0/5] Merge sockets 2017/07/11, Peter Maydell, 2017/07/14