mirror of
https://github.com/strongswan/strongswan.git
synced 2025-10-08 00:02:03 -04:00
curl: Replace spaces in URIs with %20
cURL requires the URIs to be URL-encoded. Apparently, some CAs encode CRL URIs with spaces in them. Fixes #454.
This commit is contained in:
parent
ccb6758e5b
commit
72a92d4f7d
@ -80,7 +80,7 @@ static size_t curl_cb(void *ptr, size_t size, size_t nmemb, cb_data_t *data)
|
|||||||
METHOD(fetcher_t, fetch, status_t,
|
METHOD(fetcher_t, fetch, status_t,
|
||||||
private_curl_fetcher_t *this, char *uri, void *userdata)
|
private_curl_fetcher_t *this, char *uri, void *userdata)
|
||||||
{
|
{
|
||||||
char error[CURL_ERROR_SIZE];
|
char error[CURL_ERROR_SIZE], *enc_uri;
|
||||||
status_t status;
|
status_t status;
|
||||||
cb_data_t data = {
|
cb_data_t data = {
|
||||||
.cb = this->cb,
|
.cb = this->cb,
|
||||||
@ -92,9 +92,14 @@ METHOD(fetcher_t, fetch, status_t,
|
|||||||
*(chunk_t*)userdata = chunk_empty;
|
*(chunk_t*)userdata = chunk_empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (curl_easy_setopt(this->curl, CURLOPT_URL, uri) != CURLE_OK)
|
/* the URI has to be URL-encoded, we only replace spaces as replacing other
|
||||||
|
* characters (e.g. '/' or ':') would render the URI invalid */
|
||||||
|
enc_uri = strreplace(uri, " ", "%20");
|
||||||
|
|
||||||
|
if (curl_easy_setopt(this->curl, CURLOPT_URL, enc_uri) != CURLE_OK)
|
||||||
{ /* URL type not supported by curl */
|
{ /* URL type not supported by curl */
|
||||||
return NOT_SUPPORTED;
|
status = NOT_SUPPORTED;
|
||||||
|
goto out;
|
||||||
}
|
}
|
||||||
curl_easy_setopt(this->curl, CURLOPT_ERRORBUFFER, error);
|
curl_easy_setopt(this->curl, CURLOPT_ERRORBUFFER, error);
|
||||||
curl_easy_setopt(this->curl, CURLOPT_FAILONERROR, TRUE);
|
curl_easy_setopt(this->curl, CURLOPT_FAILONERROR, TRUE);
|
||||||
@ -125,6 +130,12 @@ METHOD(fetcher_t, fetch, status_t,
|
|||||||
status = FAILED;
|
status = FAILED;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
out:
|
||||||
|
if (enc_uri != uri)
|
||||||
|
{
|
||||||
|
free(enc_uri);
|
||||||
|
}
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user