summaryrefslogtreecommitdiffstats
path: root/src/pki.c
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2011-08-21 13:13:53 +0200
committerAndreas Schneider <asn@cryptomilk.org>2011-08-21 13:13:53 +0200
commit9c9199e05fadfb4d44ac80b23adbc67d95bd7541 (patch)
tree6291d71e42ef2ab973dcbec173de69f3627d5a6f /src/pki.c
parentfa4f2d8bc134ba550ef33569a5486c6b3405ca0f (diff)
downloadlibssh-9c9199e05fadfb4d44ac80b23adbc67d95bd7541.tar.gz
libssh-9c9199e05fadfb4d44ac80b23adbc67d95bd7541.tar.xz
libssh-9c9199e05fadfb4d44ac80b23adbc67d95bd7541.zip
pki: Fix possible segfault in ssh_key_type_from_name().
Diffstat (limited to 'src/pki.c')
-rw-r--r--src/pki.c42
1 files changed, 23 insertions, 19 deletions
diff --git a/src/pki.c b/src/pki.c
index bcfb208..785ffab 100644
--- a/src/pki.c
+++ b/src/pki.c
@@ -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;
}
/**