X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/47c1197534c3247a2669df86fbc36d4094d6ba93..5e1f082d0c0af5fdb8096023772eb4f5013f78a0:/options.c diff --git a/options.c b/options.c index 4a5c65cd..44b7b038 100644 --- a/options.c +++ b/options.c @@ -1780,10 +1780,10 @@ char *check_for_hostspec(char *s, char **host_ptr, int *port_ptr) { char *p; int not_host; + int hostlen; if (port_ptr && strncasecmp(URL_PREFIX, s, strlen(URL_PREFIX)) == 0) { char *path; - int hostlen; s += strlen(URL_PREFIX); if ((p = strchr(s, '/')) != NULL) { hostlen = p - s; @@ -1812,6 +1812,7 @@ char *check_for_hostspec(char *s, char **host_ptr, int *port_ptr) if (*s == '[' && (p = strchr(s, ']')) != NULL && p[1] == ':') { s++; + hostlen = p - s; *p = '\0'; not_host = strchr(s, '/') || !strchr(s, ':'); *p = ']'; @@ -1821,6 +1822,7 @@ char *check_for_hostspec(char *s, char **host_ptr, int *port_ptr) } else { if (!(p = strchr(s, ':'))) return NULL; + hostlen = p - s; *p = '\0'; not_host = strchr(s, '/') != NULL; *p = ':'; @@ -1828,8 +1830,8 @@ char *check_for_hostspec(char *s, char **host_ptr, int *port_ptr) return NULL; } - *host_ptr = new_array(char, p - s + 1); - strlcpy(*host_ptr, s, p - s + 1); + *host_ptr = new_array(char, hostlen + 1); + strlcpy(*host_ptr, s, hostlen + 1); if (p[1] == ':') { if (port_ptr && !*port_ptr)