Re: [Qemu-devel] [PATCH 1/2] qemu-socket: allow hostnames starting with a digit

2013-06-18 Thread Paolo Bonzini
Il 03/06/2013 17:54, Ján Tomko ha scritto:
 According to RFC 1123 [1], hostnames can start with a digit too.
 
 [1] http://tools.ietf.org/html/rfc1123#page-13
 
 Signed-off-by: Ján Tomko jto...@redhat.com
 ---
  util/qemu-sockets.c | 13 -
  1 file changed, 4 insertions(+), 9 deletions(-)
 
 diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
 index fdd8dc4..727dafa 100644
 --- a/util/qemu-sockets.c
 +++ b/util/qemu-sockets.c
 @@ -24,7 +24,6 @@
  
  #include monitor/monitor.h
  #include qemu/sockets.h
 -#include qemu-common.h /* for qemu_isdigit */
  #include qemu/main-loop.h
  
  #ifndef AI_ADDRCONFIG
 @@ -511,19 +510,15 @@ InetSocketAddress *inet_parse(const char *str, Error 
 **errp)
  goto fail;
  }
  addr-ipv6 = addr-has_ipv6 = true;
 -} else if (qemu_isdigit(str[0])) {
 -/* IPv4 addr */
 -if (2 != sscanf(str, %64[0-9.]:%32[^,]%n, host, port, pos)) {
 -error_setg(errp, error parsing IPv4 address '%s', str);
 -goto fail;
 -}
 -addr-ipv4 = addr-has_ipv4 = true;
  } else {
 -/* hostname */
 +/* hostname or IPv4 addr */
  if (2 != sscanf(str, %64[^:]:%32[^,]%n, host, port, pos)) {
  error_setg(errp, error parsing address '%s', str);
  goto fail;
  }
 +if (strcspn(host, 0123456789.) == 0) {

I think what you want here is:

if (host[strspn(host, 0123456789.)] == '\0') {

Otherwise, you're still basically testing

qemu_isdigit(str[0]) || str[0] == '.'

Paolo

 +addr-ipv4 = addr-has_ipv4 = true;
 +}
  }
  
  addr-host = g_strdup(host);
 




[Qemu-devel] [PATCH 1/2] qemu-socket: allow hostnames starting with a digit

2013-06-18 Thread Paolo Bonzini
From: Ján Tomko jto...@redhat.com

According to RFC 1123 [1], hostnames can start with a digit too.

[1] http://tools.ietf.org/html/rfc1123#page-13

Signed-off-by: Ján Tomko jto...@redhat.com
Cc: qemu-sta...@nongnu.org
[Use strspn, not strcspn. - Paolo]
Signed-off-by: Paolo Bonzini pbonz...@redhat.com
---
 util/qemu-sockets.c | 13 -
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
index fdd8dc4..96eca2a 100644
--- a/util/qemu-sockets.c
+++ b/util/qemu-sockets.c
@@ -24,7 +24,6 @@
 
 #include monitor/monitor.h
 #include qemu/sockets.h
-#include qemu-common.h /* for qemu_isdigit */
 #include qemu/main-loop.h
 
 #ifndef AI_ADDRCONFIG
@@ -511,19 +510,15 @@ InetSocketAddress *inet_parse(const char *str, Error 
**errp)
 goto fail;
 }
 addr-ipv6 = addr-has_ipv6 = true;
-} else if (qemu_isdigit(str[0])) {
-/* IPv4 addr */
-if (2 != sscanf(str, %64[0-9.]:%32[^,]%n, host, port, pos)) {
-error_setg(errp, error parsing IPv4 address '%s', str);
-goto fail;
-}
-addr-ipv4 = addr-has_ipv4 = true;
 } else {
-/* hostname */
+/* hostname or IPv4 addr */
 if (2 != sscanf(str, %64[^:]:%32[^,]%n, host, port, pos)) {
 error_setg(errp, error parsing address '%s', str);
 goto fail;
 }
+if (host[strspn(host, 0123456789.)] == '\0') {
+addr-ipv4 = addr-has_ipv4 = true;
+}
 }
 
 addr-host = g_strdup(host);
-- 
1.8.1.4





Re: [Qemu-devel] [PATCH 1/2] qemu-socket: allow hostnames starting with a digit

2013-06-18 Thread Ján Tomko
On 06/18/2013 11:42 AM, Paolo Bonzini wrote:
 Il 03/06/2013 17:54, Ján Tomko ha scritto:
 According to RFC 1123 [1], hostnames can start with a digit too.

 [1] http://tools.ietf.org/html/rfc1123#page-13

 Signed-off-by: Ján Tomko jto...@redhat.com
 ---

  } else {
 -/* hostname */
 +/* hostname or IPv4 addr */
  if (2 != sscanf(str, %64[^:]:%32[^,]%n, host, port, pos)) {
  error_setg(errp, error parsing address '%s', str);
  goto fail;
  }
 +if (strcspn(host, 0123456789.) == 0) {
 
 I think what you want here is:
 
 if (host[strspn(host, 0123456789.)] == '\0') {
 

Yes, thank you for catching that.

Jan

 Otherwise, you're still basically testing
 
   qemu_isdigit(str[0]) || str[0] == '.'
 
 Paolo
 
 +addr-ipv4 = addr-has_ipv4 = true;
 +}
  }
  
  addr-host = g_strdup(host);

 
 




[Qemu-devel] [PATCH 1/2] qemu-socket: allow hostnames starting with a digit

2013-06-18 Thread Paolo Bonzini
From: Ján Tomko jto...@redhat.com

According to RFC 1123 [1], hostnames can start with a digit too.

[1] http://tools.ietf.org/html/rfc1123#page-13

Signed-off-by: Ján Tomko jto...@redhat.com
Cc: qemu-sta...@nongnu.org
[Use strspn, not strcspn. - Paolo]
Signed-off-by: Paolo Bonzini pbonz...@redhat.com
---
 util/qemu-sockets.c | 13 -
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
index fdd8dc4..96eca2a 100644
--- a/util/qemu-sockets.c
+++ b/util/qemu-sockets.c
@@ -24,7 +24,6 @@
 
 #include monitor/monitor.h
 #include qemu/sockets.h
-#include qemu-common.h /* for qemu_isdigit */
 #include qemu/main-loop.h
 
 #ifndef AI_ADDRCONFIG
@@ -511,19 +510,15 @@ InetSocketAddress *inet_parse(const char *str, Error 
**errp)
 goto fail;
 }
 addr-ipv6 = addr-has_ipv6 = true;
-} else if (qemu_isdigit(str[0])) {
-/* IPv4 addr */
-if (2 != sscanf(str, %64[0-9.]:%32[^,]%n, host, port, pos)) {
-error_setg(errp, error parsing IPv4 address '%s', str);
-goto fail;
-}
-addr-ipv4 = addr-has_ipv4 = true;
 } else {
-/* hostname */
+/* hostname or IPv4 addr */
 if (2 != sscanf(str, %64[^:]:%32[^,]%n, host, port, pos)) {
 error_setg(errp, error parsing address '%s', str);
 goto fail;
 }
+if (host[strspn(host, 0123456789.)] == '\0') {
+addr-ipv4 = addr-has_ipv4 = true;
+}
 }
 
 addr-host = g_strdup(host);
-- 
1.8.1.4





[Qemu-devel] [PATCH 1/2] qemu-socket: allow hostnames starting with a digit

2013-06-03 Thread Ján Tomko
According to RFC 1123 [1], hostnames can start with a digit too.

[1] http://tools.ietf.org/html/rfc1123#page-13

Signed-off-by: Ján Tomko jto...@redhat.com
---
 util/qemu-sockets.c | 13 -
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
index fdd8dc4..727dafa 100644
--- a/util/qemu-sockets.c
+++ b/util/qemu-sockets.c
@@ -24,7 +24,6 @@
 
 #include monitor/monitor.h
 #include qemu/sockets.h
-#include qemu-common.h /* for qemu_isdigit */
 #include qemu/main-loop.h
 
 #ifndef AI_ADDRCONFIG
@@ -511,19 +510,15 @@ InetSocketAddress *inet_parse(const char *str, Error 
**errp)
 goto fail;
 }
 addr-ipv6 = addr-has_ipv6 = true;
-} else if (qemu_isdigit(str[0])) {
-/* IPv4 addr */
-if (2 != sscanf(str, %64[0-9.]:%32[^,]%n, host, port, pos)) {
-error_setg(errp, error parsing IPv4 address '%s', str);
-goto fail;
-}
-addr-ipv4 = addr-has_ipv4 = true;
 } else {
-/* hostname */
+/* hostname or IPv4 addr */
 if (2 != sscanf(str, %64[^:]:%32[^,]%n, host, port, pos)) {
 error_setg(errp, error parsing address '%s', str);
 goto fail;
 }
+if (strcspn(host, 0123456789.) == 0) {
+addr-ipv4 = addr-has_ipv4 = true;
+}
 }
 
 addr-host = g_strdup(host);
-- 
1.8.1.5