From 85e08ae675e1a86e772211d705b816b5fa29f1c0 Mon Sep 17 00:00:00 2001 From: Jakub Jelen Date: Wed, 25 Nov 2020 13:49:08 +0100 Subject: [PATCH] pkcs11-tool: Avoid calloc with 0 argument --- src/tools/pkcs11-tool.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/tools/pkcs11-tool.c b/src/tools/pkcs11-tool.c index 4015aaf1..89244795 100644 --- a/src/tools/pkcs11-tool.c +++ b/src/tools/pkcs11-tool.c @@ -1270,15 +1270,18 @@ static void list_slots(int tokens, int refresh, int print) if (rv != CKR_OK) p11_fatal("C_GetSlotList(NULL)", rv); free(p11_slots); - p11_slots = calloc(p11_num_slots, sizeof(CK_SLOT_ID)); - if (p11_slots == NULL) { - perror("calloc failed"); - exit(1); + p11_slots = NULL; + if (p11_num_slots > 0) { + p11_slots = calloc(p11_num_slots, sizeof(CK_SLOT_ID)); + if (p11_slots == NULL) { + perror("calloc failed"); + exit(1); + } + rv = p11->C_GetSlotList(tokens, p11_slots, &p11_num_slots); + if (rv != CKR_OK) + p11_fatal("C_GetSlotList()", rv); } - rv = p11->C_GetSlotList(tokens, p11_slots, &p11_num_slots); - if (rv != CKR_OK) - p11_fatal("C_GetSlotList()", rv); } if (!print)