diff options
author | Robin Krahl <robin.krahl@ireas.org> | 2020-09-06 23:44:18 +0200 |
---|---|---|
committer | Daniel Mueller <deso@posteo.net> | 2021-01-10 17:37:55 -0800 |
commit | 6f029e744abc0f6d4cfe756d7e6b771be1be3999 (patch) | |
tree | a97e03f1708d5d28673ca4864ba78bc17ca76929 /src | |
parent | 0f163477f63d533f90b61c1f39423712567bf7ea (diff) | |
download | nitrocli-6f029e744abc0f6d4cfe756d7e6b771be1be3999.tar.gz nitrocli-6f029e744abc0f6d4cfe756d7e6b771be1be3999.tar.bz2 |
Fail if multiple matching devices are attached
Previously, we just applied our filter (if any) to all attached Nitrokey
devices and selected the first match when connection to a Nitrokey
device. This may lead to unexpected behavior if multiple devices are
attached. This patch changes the find_device function to return an
error if multiple matching devices are found.
Diffstat (limited to 'src')
-rw-r--r-- | src/commands.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/commands.rs b/src/commands.rs index ac3d020..883110a 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -61,6 +61,13 @@ fn find_device(config: &config::Config) -> anyhow::Result<nitrokey::DeviceInfo> let device = iter .next() .with_context(|| format!("Nitrokey device not found{}", format_filter(config)))?; + + anyhow::ensure!( + iter.next().is_none(), + "Multiple Nitrokey devices found{}. Use the --model and --serial-number options to \ + select one", + format_filter(config) + ); Ok(device) } |