diff options
author | 2020-08-27 09:43:28 +0000 | |
---|---|---|
committer | 2020-08-27 09:43:28 +0000 | |
commit | 8c966c57a6d7c5b422a397e9ec2b5c5ef873d449 (patch) | |
tree | ea18a806cbcacd83634e4f668330e50efc7e4e0f | |
parent | Fix a bunch of typos in various man pages. (diff) | |
download | wireguard-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.c | 9 |
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; } |