mirror of
https://git.libssh.org/projects/libssh.git
synced 2026-02-09 09:54:25 +09:00
Don't leak memory.
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@527 7dcaeef0-15fb-0310-b436-a5af3365683c
This commit is contained in:
@@ -248,6 +248,7 @@ void publickey_free(PUBLIC_KEY *key) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
PUBLIC_KEY *publickey_from_string(SSH_SESSION *session, STRING *pubkey_s) {
|
PUBLIC_KEY *publickey_from_string(SSH_SESSION *session, STRING *pubkey_s) {
|
||||||
|
PUBLIC_KEY *key = NULL;
|
||||||
BUFFER *tmpbuf = NULL;
|
BUFFER *tmpbuf = NULL;
|
||||||
STRING *type_s = NULL;
|
STRING *type_s = NULL;
|
||||||
char *type = NULL;
|
char *type = NULL;
|
||||||
@@ -276,15 +277,21 @@ PUBLIC_KEY *publickey_from_string(SSH_SESSION *session, STRING *pubkey_s) {
|
|||||||
|
|
||||||
if(strcmp(type, "ssh-dss") == 0) {
|
if(strcmp(type, "ssh-dss") == 0) {
|
||||||
SAFE_FREE(type);
|
SAFE_FREE(type);
|
||||||
return publickey_make_dss(session, tmpbuf);
|
key = publickey_make_dss(session, tmpbuf);
|
||||||
|
buffer_free(tmpbuf);
|
||||||
|
return key;
|
||||||
}
|
}
|
||||||
if(strcmp(type,"ssh-rsa") == 0) {
|
if(strcmp(type,"ssh-rsa") == 0) {
|
||||||
SAFE_FREE(type);
|
SAFE_FREE(type);
|
||||||
return publickey_make_rsa(session, tmpbuf,"ssh-rsa");
|
key = publickey_make_rsa(session, tmpbuf,"ssh-rsa");
|
||||||
|
buffer_free(tmpbuf);
|
||||||
|
return key;
|
||||||
}
|
}
|
||||||
if (strcmp(type,"ssh-rsa1") == 0) {
|
if (strcmp(type,"ssh-rsa1") == 0) {
|
||||||
SAFE_FREE(type);
|
SAFE_FREE(type);
|
||||||
return publickey_make_rsa(session, tmpbuf,"ssh-rsa1");
|
key = publickey_make_rsa(session, tmpbuf,"ssh-rsa1");
|
||||||
|
buffer_free(tmpbuf);
|
||||||
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
ssh_set_error(session, SSH_FATAL, "Unknown public key protocol %s", type);
|
ssh_set_error(session, SSH_FATAL, "Unknown public key protocol %s", type);
|
||||||
|
|||||||
Reference in New Issue
Block a user