aboutsummaryrefslogtreecommitdiff
path: root/src/keys.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/keys.c')
-rw-r--r--src/keys.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/keys.c b/src/keys.c
index 9f5a49f8..7b82d95f 100644
--- a/src/keys.c
+++ b/src/keys.c
@@ -329,7 +329,7 @@ ssh_public_key publickey_from_privatekey(ssh_private_key prv) {
if (key == NULL) {
return NULL;
}
-
+ ZERO_STRUCTP(key);
key->type = prv->type;
switch(key->type) {
case SSH_KEYTYPE_DSS:
@@ -466,6 +466,9 @@ ssh_public_key publickey_from_privatekey(ssh_private_key prv) {
}
#endif
break;
+ default:
+ publickey_free(key);
+ return NULL;
}
key->type_c = ssh_type_to_char(prv->type);
@@ -715,7 +718,8 @@ ssh_string publickey_to_string(ssh_public_key key) {
ssh_string_fill(ret, buffer_get_rest(buf), buffer_get_rest_len(buf));
error:
ssh_buffer_free(buf);
- ssh_string_free(type);
+ if(type != NULL)
+ ssh_string_free(type);
return ret;
}