]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: skip a bit more FIDO token selection logic when only a
authordjm@openbsd.org <djm@openbsd.org>
Thu, 27 Aug 2020 09:43:28 +0000 (09:43 +0000)
committerDamien Miller <djm@mindrot.org>
Thu, 27 Aug 2020 09:47:35 +0000 (19:47 +1000)
single token is attached.

with Pedro Martelletto

OpenBSD-Commit-ID: e4a324bd9814227ec1faa8cb619580e661cca9ac

sk-usbhid.c

index 0b11e40aa6a536c46f166ba3113ce995949d357f..98e8ccf109e88ec52037ed7d09c03f274fcc8fdb 100644 (file)
@@ -367,8 +367,13 @@ sk_select_by_cred(const fido_dev_info_t *devlist, size_t ndevs,
                skdebug(__func__, "sk_openv failed");
                return NULL;
        }
+       if (skvcnt == 1) {
+               sk = skv[0];
+               skv[0] = NULL;
+               goto out;
+       }
        sk = NULL;
-       for (i = 0; i < skvcnt; i++)
+       for (i = 0; i < skvcnt; i++) {
                if (sk_try(skv[i], application, key_handle,
                    key_handle_len) == 0) {
                        sk = skv[i];
@@ -376,6 +381,8 @@ sk_select_by_cred(const fido_dev_info_t *devlist, size_t ndevs,
                        skdebug(__func__, "found key in %s", sk->path);
                        break;
                }
+       }
+ out:
        sk_closev(skv, skvcnt);
        return sk;
 }