diff options
author | Robin Krahl <robin.krahl@ireas.org> | 2019-01-23 04:27:14 +0000 |
---|---|---|
committer | Robin Krahl <robin.krahl@ireas.org> | 2019-01-23 05:30:23 +0100 |
commit | d4663961c41a0fb6f81f4a54aefd0fedce49d350 (patch) | |
tree | 2622fdecee2dd3c2926118cad296e2c0772fedd1 /src/lib.rs | |
parent | c79ddf8116659efd1aa7de42bb85337632f238dd (diff) | |
download | nitrokey-rs-d4663961c41a0fb6f81f4a54aefd0fedce49d350.tar.gz nitrokey-rs-d4663961c41a0fb6f81f4a54aefd0fedce49d350.tar.bz2 |
Return UTF-8 error if libnitrokey returns an invalid string
Previously, we used lossy UTF-8 conversion. Yet the user should be
notified if we have a problem instead of silently changing the data.
Therefore, we now return an error if we enocunter an invalid UTF-8
string. This leads to a change in `get_library_version`’s signature.
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 17 |
1 files changed, 13 insertions, 4 deletions
@@ -168,21 +168,30 @@ pub fn set_log_level(level: LogLevel) { /// Returns the libnitrokey library version. /// +/// # Errors +/// +/// - [`Utf8Error`][] if libnitrokey returned an invalid UTF-8 string +/// /// # Example /// /// ``` -/// let version = nitrokey::get_library_version(); +/// # fn main() -> Result<(), nitrokey::Error> { +/// let version = nitrokey::get_library_version()?; /// println!("Using libnitrokey {}", version.git); +/// # Ok(()) +/// # } /// ``` -pub fn get_library_version() -> Version { +/// +/// [`Utf8Error`]: enum.Error.html#variant.Utf8Error +pub fn get_library_version() -> Result<Version> { // NK_get_library_version returns a static string, so we don’t have to free the pointer. let git = unsafe { nitrokey_sys::NK_get_library_version() }; let git = if git.is_null() { String::new() } else { - util::owned_str_from_ptr(git) + util::owned_str_from_ptr(git)? }; let major = unsafe { nitrokey_sys::NK_get_major_library_version() }; let minor = unsafe { nitrokey_sys::NK_get_minor_library_version() }; - Version { git, major, minor } + Ok(Version { git, major, minor }) } |