diff --git a/src/pkcs11/mechanism.c b/src/pkcs11/mechanism.c index 122dee7b..99b9f912 100644 --- a/src/pkcs11/mechanism.c +++ b/src/pkcs11/mechanism.c @@ -80,10 +80,13 @@ sc_pkcs11_get_mechanism_list(struct sc_pkcs11_card *p11card, unsigned int n, count = 0; int rv; + if (!pulCount) + return CKR_ARGUMENTS_BAD; + for (n = 0; n < p11card->nmechanisms; n++) { if (!(mt = p11card->mechanisms[n])) continue; - if (count < *pulCount && pList) + if (pList && count < *pulCount) pList[count] = mt->mech; count++; }