X-Git-Url: http://andersk.mit.edu/gitweb/gssapi-openssh.git/blobdiff_plain/7e82606eb98e6071e4ad650b91a75933c1358485..5262cbfbbd270876de2cd547ff0032d85b1d2640:/openssh/scard-opensc.c?ds=sidebyside diff --git a/openssh/scard-opensc.c b/openssh/scard-opensc.c index dd2c28d..36dae05 100644 --- a/openssh/scard-opensc.c +++ b/openssh/scard-opensc.c @@ -26,9 +26,14 @@ #include "includes.h" #if defined(SMARTCARD) && defined(USE_OPENSC) +#include + #include #include +#include +#include + #include #include @@ -455,7 +460,9 @@ sc_get_keys(const char *id, const char *pin) } key_count = r; } - keys = xmalloc(sizeof(Key *) * (key_count*2+1)); + if (key_count > 1024) + fatal("Too many keys (%u), expected <= 1024", key_count); + keys = xcalloc(key_count * 2 + 1, sizeof(Key *)); for (i = 0; i < key_count; i++) { sc_pkcs15_object_t *tmp_obj = NULL; cert_id = ((sc_pkcs15_cert_info_t *)(certs[i]->data))->id;