util: fix UTI_BytesToHex() to handle zero-length input
This commit is contained in:
parent
a655eab34f
commit
944cf6e318
2 changed files with 8 additions and 0 deletions
|
@ -330,9 +330,12 @@ void test_unit(void) {
|
|||
TEST_CHECK(UTI_HexToBytes(buf, buf, sizeof (buf)) == 7);
|
||||
TEST_CHECK(memcmp(buf, "\xAB\x12\x34\x56\x78\x00\x01", 7) == 0);
|
||||
|
||||
TEST_CHECK(UTI_BytesToHex("", 0, buf, 0) == 0);
|
||||
TEST_CHECK(UTI_BytesToHex("\xAB\x12\x34\x56\x78\x00\x01", 7, buf, 14) == 0);
|
||||
TEST_CHECK(UTI_BytesToHex("\xAB\x12\x34\x56\x78\x00\x01", 7, buf, 15) == 1);
|
||||
TEST_CHECK(strcmp(buf, "AB123456780001") == 0);
|
||||
TEST_CHECK(UTI_BytesToHex("\xAB\x12\x34\x56\x78\x00\x01", 0, buf, 15) == 1);
|
||||
TEST_CHECK(strcmp(buf, "") == 0);
|
||||
|
||||
TEST_CHECK(snprintf(buf, sizeof (buf), "%s", "") < sizeof (buf));
|
||||
TEST_CHECK(UTI_SplitString(buf, words, 3) == 0);
|
||||
|
|
5
util.c
5
util.c
|
@ -1417,6 +1417,11 @@ UTI_BytesToHex(const void *buf, unsigned int buf_len, char *hex, unsigned int he
|
|||
{
|
||||
unsigned int i, l;
|
||||
|
||||
if (hex_len < 1)
|
||||
return 0;
|
||||
|
||||
hex[0] = '\0';
|
||||
|
||||
for (i = l = 0; i < buf_len; i++, l += 2) {
|
||||
if (l + 2 >= hex_len ||
|
||||
snprintf(hex + l, hex_len - l, "%02hhX", ((const char *)buf)[i]) != 2)
|
||||
|
|
Loading…
Reference in a new issue