Patchwork [v3,8/9] net: split hostname and service by last colon

login
register
mail settings
Submitter Amos Kong
Date March 6, 2012, 10:48 p.m.
Message ID <20120306224848.24264.53905.stgit@dhcp-8-167.nay.redhat.com>
Download mbox | patch
Permalink /patch/145054/
State New
Headers show

Comments

Amos Kong - March 6, 2012, 10:48 p.m.
IPv6 address contains colons, parse will be wrong.

    [2312::8274]:5200

Signed-off-by: Amos Kong <akong@redhat.com>
---
 net.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Michael Roth - March 13, 2012, 7:34 p.m.
On Wed, Mar 07, 2012 at 06:48:48AM +0800, Amos Kong wrote:
> IPv6 address contains colons, parse will be wrong.
> 
>     [2312::8274]:5200
> 
> Signed-off-by: Amos Kong <akong@redhat.com>
> ---
>  net.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/net.c b/net.c
> index 2518e5f..d6ce1fa 100644
> --- a/net.c
> +++ b/net.c
> @@ -84,7 +84,7 @@ static int get_str_sep(char *buf, int buf_size, const char **pp, int sep)
>      const char *p, *p1;
>      int len;
>      p = *pp;
> -    p1 = strchr(p, sep);
> +    p1 = strrchr(p, sep);

Some callers expect get_str_sep() to split from the front,
net/slirp.c:net_slirp_hostfwd_remove() for example.

Would add a seperate helper, or replace it with a wrapper around a more
generic implementation.
>      if (!p1)
>          return -1;
>      len = p1 - p;
> 
>

Patch

diff --git a/net.c b/net.c
index 2518e5f..d6ce1fa 100644
--- a/net.c
+++ b/net.c
@@ -84,7 +84,7 @@  static int get_str_sep(char *buf, int buf_size, const char **pp, int sep)
     const char *p, *p1;
     int len;
     p = *pp;
-    p1 = strchr(p, sep);
+    p1 = strrchr(p, sep);
     if (!p1)
         return -1;
     len = p1 - p;