diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2011-08-21 13:13:53 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2011-08-21 13:13:53 +0200 |
commit | 9c9199e05fadfb4d44ac80b23adbc67d95bd7541 (patch) | |
tree | 6291d71e42ef2ab973dcbec173de69f3627d5a6f /src | |
parent | fa4f2d8bc134ba550ef33569a5486c6b3405ca0f (diff) | |
download | libssh-9c9199e05fadfb4d44ac80b23adbc67d95bd7541.tar.gz libssh-9c9199e05fadfb4d44ac80b23adbc67d95bd7541.tar.xz libssh-9c9199e05fadfb4d44ac80b23adbc67d95bd7541.zip |
pki: Fix possible segfault in ssh_key_type_from_name().
Diffstat (limited to 'src')
-rw-r--r-- | src/pki.c | 42 |
1 files changed, 23 insertions, 19 deletions
@@ -178,26 +178,30 @@ const char *ssh_key_type_to_char(enum ssh_keytypes_e type) { * @return The enum ssh key type. */ enum ssh_keytypes_e ssh_key_type_from_name(const char *name) { - if (strcmp(name, "rsa1") == 0) { - return SSH_KEYTYPE_RSA1; - } else if (strcmp(name, "rsa") == 0) { - return SSH_KEYTYPE_RSA; - } else if (strcmp(name, "dsa") == 0) { - return SSH_KEYTYPE_DSS; - } else if (strcmp(name, "ssh-rsa1") == 0) { - return SSH_KEYTYPE_RSA1; - } else if (strcmp(name, "ssh-rsa") == 0) { - return SSH_KEYTYPE_RSA; - } else if (strcmp(name, "ssh-dss") == 0) { - return SSH_KEYTYPE_DSS; - } else if (strcmp(name, "ssh-ecdsa") == 0 - || strcmp(name, "ecdsa") == 0 - || strcmp(name, "ecdsa-sha2-nistp256") == 0 - || strcmp(name, "ecdsa-sha2-nistp384") == 0 - || strcmp(name, "ecdsa-sha2-nistp521") == 0) { - } + if (name == NULL) { + return SSH_KEYTYPE_UNKNOWN; + } + + if (strcmp(name, "rsa1") == 0) { + return SSH_KEYTYPE_RSA1; + } else if (strcmp(name, "rsa") == 0) { + return SSH_KEYTYPE_RSA; + } else if (strcmp(name, "dsa") == 0) { + return SSH_KEYTYPE_DSS; + } else if (strcmp(name, "ssh-rsa1") == 0) { + return SSH_KEYTYPE_RSA1; + } else if (strcmp(name, "ssh-rsa") == 0) { + return SSH_KEYTYPE_RSA; + } else if (strcmp(name, "ssh-dss") == 0) { + return SSH_KEYTYPE_DSS; + } else if (strcmp(name, "ssh-ecdsa") == 0 + || strcmp(name, "ecdsa") == 0 + || strcmp(name, "ecdsa-sha2-nistp256") == 0 + || strcmp(name, "ecdsa-sha2-nistp384") == 0 + || strcmp(name, "ecdsa-sha2-nistp521") == 0) { + } - return SSH_KEYTYPE_UNKNOWN; + return SSH_KEYTYPE_UNKNOWN; } /** |