From: Jaroslav Kysela Date: Mon, 4 Dec 2017 21:52:46 +0000 (+0100) Subject: url: recompose fix auth + missing auth, fixes #4767 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5bd990112c7f475118a7d5db4ef3bad39a76f8c0;p=thirdparty%2Ftvheadend.git url: recompose fix auth + missing auth, fixes #4767 --- diff --git a/src/url.c b/src/url.c index 74ba6e653..aadbee1d0 100644 --- a/src/url.c +++ b/src/url.c @@ -59,16 +59,14 @@ urlrecompose( url_t *url ) { size_t len; char *raw, port[16]; + const int auth = url->user && url->pass; len = (url->scheme ? strlen(url->scheme) : 0) + 4 + - (url->user && url->pass ? - ((url->user ? strlen(url->user) + 2 : 0) + - (url->pass ? strlen(url->pass) : 0)) : 0 - ) + + (auth ? (strlen(url->user) + strlen(url->pass) + 2) : 0) + (url->host ? strlen(url->host) : 0) + (url->port > 0 ? 6 : 0) + (url->path ? strlen(url->path) : 0) + - (url->query ? strlen(url->query) : 0); + (url->query ? strlen(url->query) + 1 : 0); raw = malloc(len); if (raw == NULL) return -ENOMEM; @@ -76,8 +74,12 @@ urlrecompose( url_t *url ) snprintf(port, sizeof(port), ":%d", url->port); else port[0] = '\0'; - snprintf(raw, len, "%s%s%s%s%s%s%s", + snprintf(raw, len, "%s%s%s%s%s%s%s%s%s%s%s", url->scheme ?: "", url->scheme ? "://" : "", + auth ? url->user : "", + auth ? ":" : "", + auth ? url->pass : "", + auth ? "@" : "", url->host ?: "", port, url->path ?: "", (url->query && url->query[0]) ? "?" : "",