diff mbox

879e45c72da1569e07fbbc6a1aa2a708ea796044 breakage

Message ID alpine.LNX.2.00.1211211110450.5569@linmac
State New
Headers show

Commit Message

malc Nov. 21, 2012, 7:14 a.m. UTC
Commit in the subject broke inet parsing (noticed by a build on a remote
system without X and only internal vnc server that by default uses
localhost:0,to=99), following was probably intended, but you're never
sure:

         addr->ipv4 = addr->has_ipv4 = true;

Comments

Paolo Bonzini Nov. 21, 2012, 7:50 a.m. UTC | #1
Il 21/11/2012 08:14, malc ha scritto:
> 
> Commit in the subject broke inet parsing (noticed by a build on a remote
> system without X and only internal vnc server that by default uses
> localhost:0,to=99), following was probably intended, but you're never
> sure:
> 
> diff --git a/qemu-sockets.c b/qemu-sockets.c
> index cfed9c5..e7272c8 100644
> --- a/qemu-sockets.c
> +++ b/qemu-sockets.c
> @@ -529,13 +529,15 @@ static InetSocketAddress *inet_parse(const char 
> *str, Error **errp)
>      optstr = str + pos;
>      h = strstr(optstr, ",to=");
>      if (h) {
> -        if (1 != sscanf(str, "%d%n", &to, &pos) ||
> -            (str[pos] != '\0' && str[pos] != ',')) {
> +        h += 4;
> +        if (1 != sscanf(h, "%d%n", &to, &pos) ||
> +            (h[pos] != '\0' && h[pos] != ',')) {
>              error_setg(errp, "error parsing to= argument");
>              goto fail;
>          }
>          addr->has_to = true;
>          addr->to = to;
> +        optstr = h + pos;
>      }
>      if (strstr(optstr, ",ipv4")) {
>          addr->ipv4 = addr->has_ipv4 = true;
> 

Anthony Perard already submitted this patch, but it missed the -rc0 boat
for some reason.

Paolo
diff mbox

Patch

diff --git a/qemu-sockets.c b/qemu-sockets.c
index cfed9c5..e7272c8 100644
--- a/qemu-sockets.c
+++ b/qemu-sockets.c
@@ -529,13 +529,15 @@  static InetSocketAddress *inet_parse(const char 
*str, Error **errp)
     optstr = str + pos;
     h = strstr(optstr, ",to=");
     if (h) {
-        if (1 != sscanf(str, "%d%n", &to, &pos) ||
-            (str[pos] != '\0' && str[pos] != ',')) {
+        h += 4;
+        if (1 != sscanf(h, "%d%n", &to, &pos) ||
+            (h[pos] != '\0' && h[pos] != ',')) {
             error_setg(errp, "error parsing to= argument");
             goto fail;
         }
         addr->has_to = true;
         addr->to = to;
+        optstr = h + pos;
     }
     if (strstr(optstr, ",ipv4")) {