mirror of
https://github.com/curl/curl.git
synced 2026-07-28 13:53:07 +03:00
lib1560: fix to propagate failure from get_nothing()
Also: - check `curl_url()` for NULL where missing. - free memory `curl_url_get()` return pointer where missing. - propagate `curl_url_set()` errors in `clear_url()`, where missing. - add missing NULL-check before `strcmp()` in `clear_url()`. Closes #21780
This commit is contained in:
parent
73c2b4b435
commit
15356f0d36
1 changed files with 103 additions and 67 deletions
|
|
@ -1514,8 +1514,10 @@ static int set_url(void)
|
|||
for(i = 0; set_url_list[i].in && !error; i++) {
|
||||
CURLUcode rc;
|
||||
CURLU *urlp = curl_url();
|
||||
if(!urlp)
|
||||
if(!urlp) {
|
||||
error++;
|
||||
break;
|
||||
}
|
||||
rc = curl_url_set(urlp, CURLUPART_URL, set_url_list[i].in,
|
||||
set_url_list[i].urlflags);
|
||||
if(!rc) {
|
||||
|
|
@ -1810,6 +1812,8 @@ static int scopeid(void)
|
|||
int error = 0;
|
||||
CURLUcode rc;
|
||||
char *url;
|
||||
if(!u)
|
||||
return 1;
|
||||
|
||||
rc = curl_url_set(u, CURLUPART_URL,
|
||||
"https://[fe80::20c:29ff:fe9c:409b%25eth0]/hello.html", 0);
|
||||
|
|
@ -1937,52 +1941,80 @@ static int scopeid(void)
|
|||
static int get_nothing(void)
|
||||
{
|
||||
CURLU *u = curl_url();
|
||||
if(u) {
|
||||
char *p;
|
||||
CURLUcode rc;
|
||||
int error = 0;
|
||||
CURLUcode rc;
|
||||
char *p = NULL;
|
||||
if(!u)
|
||||
return 1;
|
||||
|
||||
rc = curl_url_get(u, CURLUPART_SCHEME, &p, 0);
|
||||
if(rc != CURLUE_NO_SCHEME)
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
|
||||
rc = curl_url_get(u, CURLUPART_HOST, &p, 0);
|
||||
if(rc != CURLUE_NO_HOST)
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
|
||||
rc = curl_url_get(u, CURLUPART_USER, &p, 0);
|
||||
if(rc != CURLUE_NO_USER)
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
|
||||
rc = curl_url_get(u, CURLUPART_PASSWORD, &p, 0);
|
||||
if(rc != CURLUE_NO_PASSWORD)
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
|
||||
rc = curl_url_get(u, CURLUPART_OPTIONS, &p, 0);
|
||||
if(rc != CURLUE_NO_OPTIONS)
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
|
||||
rc = curl_url_get(u, CURLUPART_PATH, &p, 0);
|
||||
if(rc != CURLUE_OK)
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
else
|
||||
curl_free(p);
|
||||
|
||||
rc = curl_url_get(u, CURLUPART_QUERY, &p, 0);
|
||||
if(rc != CURLUE_NO_QUERY)
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
|
||||
rc = curl_url_get(u, CURLUPART_FRAGMENT, &p, 0);
|
||||
if(rc != CURLUE_NO_FRAGMENT)
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
|
||||
rc = curl_url_get(u, CURLUPART_ZONEID, &p, 0);
|
||||
if(rc != CURLUE_NO_ZONEID)
|
||||
curl_mfprintf(stderr, "unexpected return code %d on line %d\n", rc,
|
||||
__LINE__);
|
||||
|
||||
curl_url_cleanup(u);
|
||||
rc = curl_url_get(u, CURLUPART_SCHEME, &p, 0);
|
||||
if(rc != CURLUE_NO_SCHEME) {
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
error++;
|
||||
curl_free(p);
|
||||
}
|
||||
return 0;
|
||||
|
||||
rc = curl_url_get(u, CURLUPART_HOST, &p, 0);
|
||||
if(rc != CURLUE_NO_HOST) {
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
error++;
|
||||
curl_free(p);
|
||||
}
|
||||
|
||||
rc = curl_url_get(u, CURLUPART_USER, &p, 0);
|
||||
if(rc != CURLUE_NO_USER) {
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
error++;
|
||||
curl_free(p);
|
||||
}
|
||||
|
||||
rc = curl_url_get(u, CURLUPART_PASSWORD, &p, 0);
|
||||
if(rc != CURLUE_NO_PASSWORD) {
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
error++;
|
||||
curl_free(p);
|
||||
}
|
||||
|
||||
rc = curl_url_get(u, CURLUPART_OPTIONS, &p, 0);
|
||||
if(rc != CURLUE_NO_OPTIONS) {
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
error++;
|
||||
curl_free(p);
|
||||
}
|
||||
|
||||
rc = curl_url_get(u, CURLUPART_PATH, &p, 0);
|
||||
if(rc != CURLUE_OK) {
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
error++;
|
||||
}
|
||||
else
|
||||
curl_free(p);
|
||||
|
||||
rc = curl_url_get(u, CURLUPART_QUERY, &p, 0);
|
||||
if(rc != CURLUE_NO_QUERY) {
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
error++;
|
||||
curl_free(p);
|
||||
}
|
||||
|
||||
rc = curl_url_get(u, CURLUPART_FRAGMENT, &p, 0);
|
||||
if(rc != CURLUE_NO_FRAGMENT) {
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
error++;
|
||||
curl_free(p);
|
||||
}
|
||||
|
||||
rc = curl_url_get(u, CURLUPART_ZONEID, &p, 0);
|
||||
if(rc != CURLUE_NO_ZONEID) {
|
||||
curl_mfprintf(stderr, "unexpected return code %d on line %d\n", rc,
|
||||
__LINE__);
|
||||
error++;
|
||||
curl_free(p);
|
||||
}
|
||||
|
||||
curl_url_cleanup(u);
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
static const struct clearurlcase clear_url_list[] = {
|
||||
|
|
@ -2003,29 +2035,33 @@ static int clear_url(void)
|
|||
{
|
||||
CURLU *u = curl_url();
|
||||
int i, error = 0;
|
||||
if(u) {
|
||||
char *p = NULL;
|
||||
CURLUcode rc;
|
||||
CURLUcode rc;
|
||||
char *p = NULL;
|
||||
if(!u)
|
||||
return 1;
|
||||
|
||||
for(i = 0; clear_url_list[i].in && !error; i++) {
|
||||
rc = curl_url_set(u, clear_url_list[i].part, clear_url_list[i].in, 0);
|
||||
if(rc != CURLUE_OK)
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
|
||||
rc = curl_url_set(u, CURLUPART_URL, NULL, 0);
|
||||
if(rc != CURLUE_OK)
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
|
||||
rc = curl_url_get(u, clear_url_list[i].part, &p, 0);
|
||||
if(rc != clear_url_list[i].ucode ||
|
||||
(clear_url_list[i].out && strcmp(p, clear_url_list[i].out) != 0)) {
|
||||
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
error++;
|
||||
}
|
||||
if(rc == CURLUE_OK)
|
||||
curl_free(p);
|
||||
for(i = 0; clear_url_list[i].in && !error; i++) {
|
||||
rc = curl_url_set(u, clear_url_list[i].part, clear_url_list[i].in, 0);
|
||||
if(rc != CURLUE_OK) {
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
error++;
|
||||
}
|
||||
|
||||
rc = curl_url_set(u, CURLUPART_URL, NULL, 0);
|
||||
if(rc != CURLUE_OK) {
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
error++;
|
||||
}
|
||||
|
||||
rc = curl_url_get(u, clear_url_list[i].part, &p, 0);
|
||||
if(rc != clear_url_list[i].ucode ||
|
||||
(p && clear_url_list[i].out && strcmp(p, clear_url_list[i].out) != 0)) {
|
||||
|
||||
curl_mfprintf(stderr, "unexpected return code line %d\n", __LINE__);
|
||||
error++;
|
||||
}
|
||||
if(rc == CURLUE_OK)
|
||||
curl_free(p);
|
||||
}
|
||||
|
||||
curl_url_cleanup(u);
|
||||
|
|
@ -2160,7 +2196,7 @@ err:
|
|||
static int test_api_errors(void)
|
||||
{
|
||||
CURLU *u = curl_url();
|
||||
char *p;
|
||||
char *p = NULL;
|
||||
CURLUcode rc;
|
||||
if(!u)
|
||||
return 1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue