From: Wayne Davison Date: Thu, 29 Jan 2009 07:17:46 +0000 (-0800) Subject: A few more improvements to the hostspec-parsing code. X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/commitdiff_plain/4d13a2fe559c038632fdf7ca60503e12b2be8485 A few more improvements to the hostspec-parsing code. --- diff --git a/options.c b/options.c index 0c64eaa1..2f95992b 100644 --- a/options.c +++ b/options.c @@ -2626,17 +2626,18 @@ void server_options(char **args, int *argc_p) * (required for parsing) [ and ] chars elided from the returned string. */ static char *parse_hostspec(char *str, char **path_start_ptr, int *port_ptr) { - char *s = str; - char *host_start = str; + char *s, *host_start = str; int hostlen = 0, userlen = 0; char *ret; - for ( ; ; s++) { + for (s = str; ; s++) { if (!*s) { /* It is only OK if we run out of string with rsync:// */ - if (port_ptr) - break; - return NULL; + if (!port_ptr) + return NULL; + if (!hostlen) + hostlen = s - host_start; + break; } if (*s == ':' || *s == '/') { if (!hostlen) @@ -2647,7 +2648,7 @@ static char *parse_hostspec(char *str, char **path_start_ptr, int *port_ptr) } else if (port_ptr) { *port_ptr = atoi(s); while (isDigit(s)) s++; - if (*s++ != '/') + if (*s && *s++ != '/') return NULL; } break;