summaryrefslogtreecommitdiff
path: root/libs/libssh2/src/userauth.c
diff options
context:
space:
mode:
Diffstat (limited to 'libs/libssh2/src/userauth.c')
-rw-r--r--libs/libssh2/src/userauth.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/libs/libssh2/src/userauth.c b/libs/libssh2/src/userauth.c
index e7578759f3..60fd48e47d 100644
--- a/libs/libssh2/src/userauth.c
+++ b/libs/libssh2/src/userauth.c
@@ -818,11 +818,17 @@ struct privkey_file {
const char *passphrase;
};
+struct privkey_mem {
+ const char *passphrase;
+ const char *data;
+ size_t data_len;
+};
+
static int
sign_frommemory(LIBSSH2_SESSION *session, unsigned char **sig, size_t *sig_len,
const unsigned char *data, size_t data_len, void **abstract)
{
- struct privkey_file *pk_file = (struct privkey_file *) (*abstract);
+ struct privkey_mem *pk_mem = (struct privkey_mem *) (*abstract);
const LIBSSH2_HOSTKEY_METHOD *privkeyobj;
void *hostkey_abstract;
struct iovec datavec;
@@ -831,9 +837,9 @@ sign_frommemory(LIBSSH2_SESSION *session, unsigned char **sig, size_t *sig_len,
rc = memory_read_privatekey(session, &privkeyobj, &hostkey_abstract,
session->userauth_pblc_method,
session->userauth_pblc_method_len,
- pk_file->filename,
- strlen(pk_file->filename),
- pk_file->passphrase);
+ pk_mem->data,
+ pk_mem->data_len,
+ pk_mem->passphrase);
if(rc)
return rc;
@@ -1410,7 +1416,7 @@ _libssh2_key_sign_algorithm(LIBSSH2_SESSION *session,
LIBSSH2_FREE(session, *key_method);
*key_method = LIBSSH2_ALLOC(session, match_len);
- if(key_method) {
+ if(*key_method) {
memcpy(*key_method, match, match_len);
*key_method_len = match_len;
}
@@ -1511,7 +1517,7 @@ retry_auth:
_libssh2_debug((session,
LIBSSH2_TRACE_KEX,
"Signing using %.*s",
- session->userauth_pblc_method_len,
+ (int)session->userauth_pblc_method_len,
session->userauth_pblc_method));
}
@@ -1835,12 +1841,13 @@ userauth_publickey_frommemory(LIBSSH2_SESSION *session,
{
unsigned char *pubkeydata = NULL;
size_t pubkeydata_len = 0;
- struct privkey_file privkey_file;
- void *abstract = &privkey_file;
+ struct privkey_mem privkey_mem;
+ void *abstract = &privkey_mem;
int rc;
- privkey_file.filename = privatekeydata;
- privkey_file.passphrase = passphrase;
+ privkey_mem.data = privatekeydata;
+ privkey_mem.data_len = privatekeydata_len;
+ privkey_mem.passphrase = passphrase;
if(session->userauth_pblc_state == libssh2_NB_state_idle) {
if(publickeydata_len && publickeydata) {