cLib: Pass on 'Invalid credentials' as an error

Instead of just the generic error message.
This commit is contained in:
Vishesh Handa
2019-05-29 15:08:02 +02:00
parent 6b79e99047
commit 9573c8e2d5
3 changed files with 12 additions and 2 deletions

View File

@ -45,6 +45,11 @@ gj_error *gj_error_info(int err)
error->message = (char *)malloc(256);
ERR_error_string(error->code, error->message);
break;
case GJ_ERR_INVALID_CREDENTIALS:
error->code = err;
error->message = "Invalid Credentials";
break;
}
return error;
}

View File

@ -268,6 +268,7 @@ void gj_set_ssh_keys_paths(char *public_key, char *private_key, char *passcode)
typedef struct
{
bool first_time;
int error_code;
} gj_credentials_payload;
int credentials_cb(git_cred **out, const char *url, const char *username_from_url,
@ -281,6 +282,7 @@ int credentials_cb(git_cred **out, const char *url, const char *username_from_ur
gj_credentials_payload *gj_payload = (gj_credentials_payload *)payload;
if (!gj_payload->first_time)
{
gj_payload->error_code = GJ_ERR_INVALID_CREDENTIALS;
gj_log_internal("GitJournal: Credentials have been tried and they failed\n");
return -1;
}
@ -324,7 +326,7 @@ int gj_git_clone(const char *clone_url, const char *git_base_path)
options.fetch_opts.callbacks.transfer_progress = fetch_progress;
options.fetch_opts.callbacks.certificate_check = certificate_check_cb;
gj_credentials_payload gj_payload = {true};
gj_credentials_payload gj_payload = {true, 0};
options.fetch_opts.callbacks.payload = (void *)&gj_payload;
options.fetch_opts.callbacks.credentials = credentials_cb;
@ -335,6 +337,8 @@ int gj_git_clone(const char *clone_url, const char *git_base_path)
cleanup:
git_repository_free(repo);
if (gj_payload.error_code != 0)
return gj_payload.error_code;
return err;
}

View File

@ -42,6 +42,7 @@ int gj_generate_ssh_keys(const char *private_key_path,
#define GJ_ERR_EMPTY_COMMIT -954
#define GJ_ERR_PULL_INVALID_STATE -955
#define GJ_ERR_OPENSSL -956
#define GJ_ERR_LAST -956
#define GJ_ERR_INVALID_CREDENTIALS -957
#define GJ_ERR_LAST -957
#endif