]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream commit
authordjm@openbsd.org <djm@openbsd.org>
Fri, 12 Feb 2016 00:20:30 +0000 (00:20 +0000)
committerDamien Miller <djm@mindrot.org>
Fri, 12 Feb 2016 00:23:05 +0000 (11:23 +1100)
avoid fatal() for PKCS11 tokens that present empty key IDs
 bz#1773, ok markus@

Upstream-ID: 044a764fee526f2c4a9d530bd10695422d01fc54

ssh-pkcs11.c

index 92614a52d64d323123a710016301e38437ef6efe..d1f750db04105fa913191d5b8857ae8be54b00df 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-pkcs11.c,v 1.21 2015/07/18 08:02:17 djm Exp $ */
+/* $OpenBSD: ssh-pkcs11.c,v 1.22 2016/02/12 00:20:30 djm Exp $ */
 /*
  * Copyright (c) 2010 Markus Friedl.  All rights reserved.
  *
@@ -322,8 +322,10 @@ pkcs11_rsa_wrap(struct pkcs11_provider *provider, CK_ULONG slotidx,
        k11->slotidx = slotidx;
        /* identify key object on smartcard */
        k11->keyid_len = keyid_attrib->ulValueLen;
-       k11->keyid = xmalloc(k11->keyid_len);
-       memcpy(k11->keyid, keyid_attrib->pValue, k11->keyid_len);
+       if (k11->keyid_len > 0) {
+               k11->keyid = xmalloc(k11->keyid_len);
+               memcpy(k11->keyid, keyid_attrib->pValue, k11->keyid_len);
+       }
        k11->orig_finish = def->finish;
        memcpy(&k11->rsa_method, def, sizeof(k11->rsa_method));
        k11->rsa_method.name = "pkcs11";