]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: only call sshkey_xmss_init() once for KEY_XMSS_CERT; ok
authormarkus@openbsd.org <markus@openbsd.org>
Wed, 24 Jun 2020 15:07:33 +0000 (15:07 +0000)
committerDamien Miller <djm@mindrot.org>
Fri, 26 Jun 2020 05:18:07 +0000 (15:18 +1000)
djm

OpenBSD-Commit-ID: d0002ffb7f20f538b014d1d0735facd5a81ff096

sshkey.c

index 5497497cdd3445b9e2993438f6ae04ddf5ce13ad..10b9e4676f46c6ffa4f5089e3b2d3e15f84c1780 100644 (file)
--- a/sshkey.c
+++ b/sshkey.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshkey.c,v 1.109 2020/06/22 05:58:35 djm Exp $ */
+/* $OpenBSD: sshkey.c,v 1.110 2020/06/24 15:07:33 markus Exp $ */
 /*
  * Copyright (c) 2000, 2001 Markus Friedl.  All rights reserved.
  * Copyright (c) 2008 Alexander von Gernler.  All rights reserved.
@@ -3600,10 +3600,12 @@ sshkey_private_deserialize(struct sshbuf *buf, struct sshkey **kp)
        case KEY_XMSS:
        case KEY_XMSS_CERT:
                if ((r = sshbuf_get_cstring(buf, &xmss_name, NULL)) != 0 ||
-                   (r = sshkey_xmss_init(k, xmss_name)) != 0 ||
                    (r = sshbuf_get_string(buf, &xmss_pk, &pklen)) != 0 ||
                    (r = sshbuf_get_string(buf, &xmss_sk, &sklen)) != 0)
                        goto out;
+               if (type == KEY_XMSS &&
+                   (r = sshkey_xmss_init(k, xmss_name)) != 0)
+                       goto out;
                if (pklen != sshkey_xmss_pklen(k) ||
                    sklen != sshkey_xmss_sklen(k)) {
                        r = SSH_ERR_INVALID_FORMAT;