Line Flow Count Block(s) Source
1 - /*
2 - * Copyright (C) the libgit2 contributors. All rights reserved.
3 - *
4 - * This file is part of libgit2, distributed under the GNU GPL v2 with
5 - * a Linking Exception. For full terms see the included COPYING file.
6 - */
7 -
8 - #include "common.h"
9 -
10 - #include "git2/credential_helpers.h"
11 -
12 9 2 int git_credential_userpass(
13 - git_credential **cred,
14 - const char *url,
15 - const char *user_from_url,
16 - unsigned int allowed_types,
17 - void *payload)
18 - {
19 9 2 git_credential_userpass_payload *userpass = (git_credential_userpass_payload*)payload;
20 9 2 const char *effective_username = NULL;
21 -
22 - GIT_UNUSED(url);
23 -
24 9 2-4 if (!userpass || !userpass->password) return -1;
25 -
26 - /* Username resolution: a username can be passed with the URL, the
27 - * credentials payload, or both. Here's what we do. Note that if we get
28 - * this far, we know that any password the url may contain has already
29 - * failed at least once, so we ignore it.
30 - *
31 - * | Payload | URL | Used |
32 - * +-------------+----------+-----------+
33 - * | yes | no | payload |
34 - * | yes | yes | payload |
35 - * | no | yes | url |
36 - * | no | no | FAIL |
37 - */
38 6 5 if (userpass->username)
39 5 6 effective_username = userpass->username;
40 1 7 else if (user_from_url)
41 1 8 effective_username = user_from_url;
42 - else
43 ##### 9 return -1;
44 -
45 6 10 if (GIT_CREDENTIAL_USERNAME & allowed_types)
46 ##### 11 return git_credential_username_new(cred, effective_username);
47 -
48 6 12,14 if ((GIT_CREDENTIAL_USERPASS_PLAINTEXT & allowed_types) == 0 ||
49 5 13 git_credential_userpass_plaintext_new(cred, effective_username, userpass->password) < 0)
50 1 15 return -1;
51 -
52 5 16 return 0;
53 - }
54 -
55 - /* Deprecated credential functions */
56 -
57 - #ifndef GIT_DEPRECATE_HARD
58 ##### 2 int git_cred_userpass(
59 - git_credential **out,
60 - const char *url,
61 - const char *user_from_url,
62 - unsigned int allowed_types,
63 - void *payload)
64 - {
65 ##### 2 return git_credential_userpass(out, url, user_from_url,
66 - allowed_types, payload);
67 - }
68 - #endif