Projects
openEuler:22.03:LTS:LoongArch
curl
_service:tar_scm_kernel_repo:backport-urlapi-ma...
Sign Up
Log In
Username
Password
Sorry, you are not authorized to perform this action.
×
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm_kernel_repo:backport-urlapi-make-sure-zoneid-is-also-duplicated-in-curl_u.patch of Package curl
From 49e244318672c688097c1bf601a110005cd9a6a8 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg <daniel@haxx.se> Date: Mon, 31 Jul 2023 10:07:35 +0200 Subject: [PATCH] urlapi: make sure zoneid is also duplicated in curl_url_dup Add several curl_url_dup() tests to the general lib1560 test. Reported-by: Rutger Broekhoff Bug: https://curl.se/mail/lib-2023-07/0047.html Closes #11549 Conflict: tests/libtest/lib1560.c for context adapt Reference: https://github.com/curl/curl/commit/49e244318672c688097c1bf601a110005cd9a6a8 --- lib/urlapi.c | 1 + tests/libtest/lib1560.c | 68 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/lib/urlapi.c b/lib/urlapi.c index 7f03862..b676c4d 100644 --- a/lib/urlapi.c +++ b/lib/urlapi.c @@ -1096,6 +1096,7 @@ CURLU *curl_url_dup(CURLU *in) DUP(u, in, path); DUP(u, in, query); DUP(u, in, fragment); + DUP(u, in, zoneid); u->portnum = in->portnum; } return u; diff --git a/tests/libtest/lib1560.c b/tests/libtest/lib1560.c index b822004..960ee50 100644 --- a/tests/libtest/lib1560.c +++ b/tests/libtest/lib1560.c @@ -1129,10 +1129,78 @@ static int scopeid(void) return error; } + +static int urldup(void) +{ + const char *url[] = { + "http://" + "user:pwd@" + "[2a04:4e42:e00::347%25eth0]" + ":80" + "/path" + "?query" + "#fraggie", + "https://example.com", + "https://user@example.com", + "https://user.pwd@example.com", + "https://user.pwd@example.com:1234", + "https://example.com:1234", + "example.com:1234", + "https://user.pwd@example.com:1234/path?query#frag", + NULL + }; + CURLU *copy = NULL; + char *h_str = NULL, *copy_str = NULL; + CURLU *h = curl_url(); + int i; + + if(!h) + goto err; + + for(i = 0; url[i]; i++) { + CURLUcode rc = curl_url_set(h, CURLUPART_URL, url[i], + CURLU_GUESS_SCHEME); + if(rc) + goto err; + copy = curl_url_dup(h); + + rc = curl_url_get(h, CURLUPART_URL, &h_str, 0); + if(rc) + goto err; + + rc = curl_url_get(copy, CURLUPART_URL, ©_str, 0); + if(rc) + goto err; + + if(strcmp(h_str, copy_str)) { + printf("Original: %s\nParsed: %s\nCopy: %s\n", + url[i], h_str, copy_str); + goto err; + } + curl_free(copy_str); + curl_free(h_str); + curl_url_cleanup(copy); + copy_str = NULL; + h_str = NULL; + copy = NULL; + } + curl_url_cleanup(h); + return 0; +err: + curl_free(copy_str); + curl_free(h_str); + curl_url_cleanup(copy); + curl_url_cleanup(h); + return 1; +} + int test(char *URL) { (void)URL; /* not used */ + if(urldup()) + return 11; + if(scopeid()) return 6; -- 2.33.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.