From 12048c71501a2b62225e65ba270cdcd0dcd691ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= Date: Mon, 29 Oct 2018 12:58:48 +0100 Subject: [PATCH] Fix error handling in hex_decode. Problem found while refactoring usage in examples/turnserver/. Bug: webrtc:6424 Change-Id: Ib1d54055c5914136b5bf165d48ab7d19520ff967 Reviewed-on: https://webrtc-review.googlesource.com/c/108302 Reviewed-by: Karl Wiberg Commit-Queue: Niels Moller Cr-Commit-Position: refs/heads/master@{#25412} --- rtc_base/stringencode.cc | 4 ++-- rtc_base/stringencode_unittest.cc | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/rtc_base/stringencode.cc b/rtc_base/stringencode.cc index df981b04a1..fc4e3bc8e7 100644 --- a/rtc_base/stringencode.cc +++ b/rtc_base/stringencode.cc @@ -60,9 +60,9 @@ char hex_encode(unsigned char val) { bool hex_decode(char ch, unsigned char* val) { if ((ch >= '0') && (ch <= '9')) { *val = ch - '0'; - } else if ((ch >= 'A') && (ch <= 'Z')) { + } else if ((ch >= 'A') && (ch <= 'F')) { *val = (ch - 'A') + 10; - } else if ((ch >= 'a') && (ch <= 'z')) { + } else if ((ch >= 'a') && (ch <= 'f')) { *val = (ch - 'a') + 10; } else { return false; diff --git a/rtc_base/stringencode_unittest.cc b/rtc_base/stringencode_unittest.cc index 9bdc592c29..f21c4cb78c 100644 --- a/rtc_base/stringencode_unittest.cc +++ b/rtc_base/stringencode_unittest.cc @@ -141,7 +141,8 @@ TEST_F(HexEncodeTest, TestDecodeTooShort) { // Test that decoding non-hex data fails. TEST_F(HexEncodeTest, TestDecodeBogusData) { - dec_res_ = hex_decode_with_delimiter(decoded_, sizeof(decoded_), "xyz", 3, 0); + dec_res_ = + hex_decode_with_delimiter(decoded_, sizeof(decoded_), "axyz", 4, 0); ASSERT_EQ(0U, dec_res_); }