summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordjm <djm@openbsd.org>2020-08-27 09:43:28 +0000
committerdjm <djm@openbsd.org>2020-08-27 09:43:28 +0000
commit8c966c57a6d7c5b422a397e9ec2b5c5ef873d449 (patch)
treeea18a806cbcacd83634e4f668330e50efc7e4e0f
parentFix a bunch of typos in various man pages. (diff)
downloadwireguard-openbsd-8c966c57a6d7c5b422a397e9ec2b5c5ef873d449.tar.xz
wireguard-openbsd-8c966c57a6d7c5b422a397e9ec2b5c5ef873d449.zip
skip a bit more FIDO token selection logic when only a single token
is attached. with Pedro Martelletto
-rw-r--r--usr.bin/ssh/sk-usbhid.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/usr.bin/ssh/sk-usbhid.c b/usr.bin/ssh/sk-usbhid.c
index 96e8a884475..a42a69d024e 100644
--- a/usr.bin/ssh/sk-usbhid.c
+++ b/usr.bin/ssh/sk-usbhid.c
@@ -350,8 +350,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];
@@ -359,6 +364,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;
}