diff options
author | Robin Krahl <robin.krahl@ireas.org> | 2019-01-16 02:52:58 +0000 |
---|---|---|
committer | Robin Krahl <robin.krahl@ireas.org> | 2019-01-16 20:17:07 +0100 |
commit | 3c8092cd937d6f449b1959eab9e7e15549970d85 (patch) | |
tree | 611be4c031b01ff8143a677e2954d830146ecde3 /src | |
parent | 7c2bb330b125cde7ceb55616b3d8c50a98840c58 (diff) | |
download | nitrokey-rs-3c8092cd937d6f449b1959eab9e7e15549970d85.tar.gz nitrokey-rs-3c8092cd937d6f449b1959eab9e7e15549970d85.tar.bz2 |
Fix result_from_string for empty return values
An empty string returned from a libnitrokey function can either indicate
an error or be a valid return value. Previously, we assumed that it
indicates an error. But instead, we should check the last command
status and use it to decide whether to return the empty string or an
error code.
This breaks the unit tests that assume that empty strings cause errors.
These will be fixed in the next patches.
Diffstat (limited to 'src')
-rw-r--r-- | src/util.rs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/util.rs b/src/util.rs index 54062a5..567c478 100644 --- a/src/util.rs +++ b/src/util.rs @@ -83,10 +83,13 @@ pub fn result_from_string(ptr: *const c_char) -> Result<String, CommandError> { unsafe { let s = owned_str_from_ptr(ptr); free(ptr as *mut c_void); + // An empty string can both indicate an error or be a valid return value. In this case, we + // have to check the last command status to decide what to return. if s.is_empty() { - return Err(get_last_error()); + get_last_result().map(|_| s) + } else { + Ok(s) } - return Ok(s); } } |