mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-03 08:53:48 +00:00
Skip "user@" when finding hostname in url
This commit is contained in:
parent
5f9f69d983
commit
5f10853e90
@ -580,10 +580,12 @@ int gitno_select_in(gitno_buffer *buf, long int sec, long int usec)
|
|||||||
|
|
||||||
int gitno_extract_host_and_port(char **host, char **port, const char *url, const char *default_port)
|
int gitno_extract_host_and_port(char **host, char **port, const char *url, const char *default_port)
|
||||||
{
|
{
|
||||||
char *colon, *slash, *delim;
|
char *colon, *slash, *at, *delim;
|
||||||
|
const char *start;
|
||||||
|
|
||||||
colon = strchr(url, ':');
|
colon = strchr(url, ':');
|
||||||
slash = strchr(url, '/');
|
slash = strchr(url, '/');
|
||||||
|
at = strchr(url, '@');
|
||||||
|
|
||||||
if (slash == NULL) {
|
if (slash == NULL) {
|
||||||
giterr_set(GITERR_NET, "Malformed URL: missing /");
|
giterr_set(GITERR_NET, "Malformed URL: missing /");
|
||||||
@ -598,7 +600,9 @@ int gitno_extract_host_and_port(char **host, char **port, const char *url, const
|
|||||||
GITERR_CHECK_ALLOC(*port);
|
GITERR_CHECK_ALLOC(*port);
|
||||||
|
|
||||||
delim = colon == NULL ? slash : colon;
|
delim = colon == NULL ? slash : colon;
|
||||||
*host = git__strndup(url, delim - url);
|
start = at == NULL && at < slash ? url : at+1;
|
||||||
|
|
||||||
|
*host = git__strndup(start, delim - start);
|
||||||
GITERR_CHECK_ALLOC(*host);
|
GITERR_CHECK_ALLOC(*host);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#define LIVE_REPO_URL "http://github.com/libgit2/TestGitRepository"
|
#define LIVE_REPO_URL "http://github.com/libgit2/TestGitRepository"
|
||||||
#define LIVE_EMPTYREPO_URL "http://github.com/libgit2/TestEmptyRepository"
|
#define LIVE_EMPTYREPO_URL "http://github.com/libgit2/TestEmptyRepository"
|
||||||
|
#define BB_REPO_URL "https://libgit2@bitbucket.org/libgit2/testgitrepository.git"
|
||||||
|
|
||||||
static git_repository *g_repo;
|
static git_repository *g_repo;
|
||||||
static git_clone_options g_options;
|
static git_clone_options g_options;
|
||||||
@ -150,4 +151,20 @@ void test_online_clone__credentials(void)
|
|||||||
g_options.cred_acquire_payload = &user_pass;
|
g_options.cred_acquire_payload = &user_pass;
|
||||||
|
|
||||||
cl_git_pass(git_clone(&g_repo, remote_url, "./foo", &g_options));
|
cl_git_pass(git_clone(&g_repo, remote_url, "./foo", &g_options));
|
||||||
|
git_repository_free(g_repo); g_repo = NULL;
|
||||||
|
cl_fixture_cleanup("./foo");
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_online_clone__bitbucket_style(void)
|
||||||
|
{
|
||||||
|
git_cred_userpass_payload user_pass = {
|
||||||
|
"libgit2", "libgit2"
|
||||||
|
};
|
||||||
|
|
||||||
|
g_options.cred_acquire_cb = git_cred_userpass;
|
||||||
|
g_options.cred_acquire_payload = &user_pass;
|
||||||
|
|
||||||
|
cl_git_pass(git_clone(&g_repo, BB_REPO_URL, "./foo", &g_options));
|
||||||
|
git_repository_free(g_repo); g_repo = NULL;
|
||||||
|
cl_fixture_cleanup("./foo");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user