Commit 5f10853e by Ben Straub

Skip "user@" when finding hostname in url

parent 5f9f69d9
...@@ -580,10 +580,12 @@ int gitno_select_in(gitno_buffer *buf, long int sec, long int usec) ...@@ -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 ...@@ -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 @@ ...@@ -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) ...@@ -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");
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment