aboutsummaryrefslogtreecommitdiff
path: root/src/commands.rs
diff options
context:
space:
mode:
authorRobin Krahl <robin.krahl@ireas.org>2020-09-06 23:44:18 +0200
committerDaniel Mueller <deso@posteo.net>2021-01-10 17:37:55 -0800
commit6f029e744abc0f6d4cfe756d7e6b771be1be3999 (patch)
treea97e03f1708d5d28673ca4864ba78bc17ca76929 /src/commands.rs
parent0f163477f63d533f90b61c1f39423712567bf7ea (diff)
downloadnitrocli-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/commands.rs')
-rw-r--r--src/commands.rs7
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)
}