diff options
author | Szczepan Zalega <szczepan@nitrokey.com> | 2018-02-12 09:40:00 +0100 |
---|---|---|
committer | Szczepan Zalega <szczepan@nitrokey.com> | 2018-02-12 09:40:00 +0100 |
commit | 096dabe54a0026bcdeaffe2164c69e87c67d1c33 (patch) | |
tree | 018bd5f0ab3fe6d2ffb00a51454a352694e5da9a | |
parent | e2e009d7d55b75da4537b1fbecb6759c0aabb63c (diff) | |
parent | 0c4f00c6198246a2fe543cabdc3da3629a835cbe (diff) | |
download | libnitrokey-096dabe54a0026bcdeaffe2164c69e87c67d1c33.tar.gz libnitrokey-096dabe54a0026bcdeaffe2164c69e87c67d1c33.tar.bz2 |
Merge branch 'pr_96'
Changes in hex_string_to_byte - it could produce invalid results
depending on value from byte after the buffer.
Used in:
write_HOTP_slot_authorize
write_OTP_slot_no_authorize
write_TOTP_slot_authorize
Closes #96
-rw-r--r-- | misc.cc | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -34,16 +34,17 @@ namespace misc { ::std::vector<uint8_t> hex_string_to_byte(const char* hexString){ - const size_t big_string_size = 256; //arbitrary 'big' number - const size_t s_size = strlen(hexString); + const size_t big_string_size = 257; //arbitrary 'big' number + const size_t s_size = strnlen(hexString, big_string_size); const size_t d_size = s_size/2; - if (s_size%2!=0 || s_size>big_string_size){ + if (s_size%2!=0 || s_size>=big_string_size){ throw InvalidHexString(0); } auto data = ::std::vector<uint8_t>(); data.reserve(d_size); - char buf[2]; + char buf[3]; + buf[2] = '\0'; for(size_t i=0; i<s_size; i++){ char c = hexString[i]; |