diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2013-08-03 20:02:25 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2013-08-03 21:42:01 +0200 |
commit | 662dd159078f0a5739e83aa4457adf11ce52fb35 (patch) | |
tree | aaed94c63e9559fd6e257df5ff37aba1ef5ea802 /src | |
parent | 00c99a10f6858e578480f4f3071cde6a20b29f15 (diff) | |
download | gnutls-662dd159078f0a5739e83aa4457adf11ce52fb35.tar.gz |
Do not try to parse arbitrary objects as certificates.
Diffstat (limited to 'src')
-rw-r--r-- | src/pkcs11.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/pkcs11.c b/src/pkcs11.c index 18b96451de..a804fdc068 100644 --- a/src/pkcs11.c +++ b/src/pkcs11.c @@ -77,7 +77,7 @@ pkcs11_list (FILE * outfile, const char *url, int type, unsigned int login, gnutls_pkcs11_obj_t *crt_list; gnutls_x509_crt_t xcrt; unsigned int crt_list_size = 0, i; - int ret; + int ret, otype; char *output; int attrs; unsigned int obj_flags = 0; @@ -143,9 +143,9 @@ pkcs11_list (FILE * outfile, const char *url, int type, unsigned int login, fprintf (outfile, "Object %d:\n\tURL: %s\n", i, output); + otype = gnutls_pkcs11_obj_get_type(crt_list[i]); fprintf (outfile, "\tType: %s\n", - gnutls_pkcs11_type_get_name (gnutls_pkcs11_obj_get_type - (crt_list[i]))); + gnutls_pkcs11_type_get_name (otype)); size = sizeof (buf); ret = @@ -171,12 +171,13 @@ pkcs11_list (FILE * outfile, const char *url, int type, unsigned int login, } fprintf (outfile, "\tID: %s\n\n", buf); - - if (attrs == GNUTLS_PKCS11_OBJ_ATTR_ALL || attrs == GNUTLS_PKCS11_OBJ_ATTR_PRIVKEY) continue; + if (otype != GNUTLS_PKCS11_OBJ_X509_CRT) + continue; + ret = gnutls_x509_crt_init (&xcrt); if (ret < 0) { |