diff options
author | Robin Krahl <me@robin-krahl.de> | 2018-07-08 00:37:20 +0200 |
---|---|---|
committer | Robin Krahl <robin.krahl@ireas.org> | 2018-12-10 14:36:40 +0100 |
commit | c1e6bcb3e448962b5f4cf4453e629eae1a82b943 (patch) | |
tree | 7ed3dbef91acaed4c718ba49ad2a11301b1db41c | |
parent | 0c0b99880ded2ebb7f2cca68bceb94ec1b82843e (diff) | |
download | nitrokey-rs-c1e6bcb3e448962b5f4cf4453e629eae1a82b943.tar.gz nitrokey-rs-c1e6bcb3e448962b5f4cf4453e629eae1a82b943.tar.bz2 |
Always free string pointers returned by libnitrokey
Old libnitrokey versions could return pointers to both statically and
dynamically allocated strings for functions that return strings. This
has been fixed in libnitrokey commit 7a8550d (included in v3.4). This
patch removes the old workaround and always frees the return value of
functions returning a string pointer.
-rw-r--r-- | TODO.md | 2 | ||||
-rw-r--r-- | src/util.rs | 3 |
2 files changed, 1 insertions, 4 deletions
@@ -34,8 +34,6 @@ - Fix timing issues with the `totp_no_pin` and `totp_pin` test cases. - Clear passwords from memory. - Find a nicer syntax for the `write_config` test. -- Fix segmentation faults when freeing string literals with old Nitrokey - versions (fixed in libnitrokey commit 7a8550d). - Prevent construction of internal types. - Add Storage-only examples to the `DeviceWrapper` documentation. - Fix generic connection (`get_connected_device`). diff --git a/src/util.rs b/src/util.rs index d764baa..6f4fbb0 100644 --- a/src/util.rs +++ b/src/util.rs @@ -73,11 +73,10 @@ 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); if s.is_empty() { return Err(get_last_error()); } - // TODO: move up for newer libnitrokey versions - free(ptr as *mut c_void); return Ok(s); } } |