]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
lib: Use hex_byte() in strhex_to_str()
authorVolker Lendecke <vl@samba.org>
Thu, 14 Jan 2021 09:21:19 +0000 (10:21 +0100)
committerJeremy Allison <jra@samba.org>
Fri, 22 Jan 2021 19:54:37 +0000 (19:54 +0000)
I had completely missed that one in the last round...

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
lib/util/util.c

index 3ca6b61df324049fb132bfced18b18593f91f525..57f19aaa1a16f920164d902eee2b017d025f2b44 100644 (file)
@@ -879,42 +879,21 @@ _PUBLIC_ size_t strhex_to_str(char *p, size_t p_len, const char *strhex, size_t
 {
        size_t i = 0;
        size_t num_chars = 0;
-       uint8_t   lonybble, hinybble;
-       const char     *hexchars = "0123456789ABCDEF";
-       char           *p1 = NULL, *p2 = NULL;
 
        /* skip leading 0x prefix */
        if (strncasecmp(strhex, "0x", 2) == 0) {
                i += 2; /* skip two chars */
        }
 
-       for (; i+1 < strhex_len && strhex[i] != 0 && strhex[i+1] != 0; i++) {
-               p1 = strchr(hexchars, toupper((unsigned char)strhex[i]));
-               if (p1 == NULL) {
+       while ((i < strhex_len) && (num_chars < p_len)) {
+               bool ok = hex_byte(&strhex[i], (uint8_t *)&p[num_chars]);
+               if (!ok) {
                        break;
                }
-
-               i++; /* next hex digit */
-
-               p2 = strchr(hexchars, toupper((unsigned char)strhex[i]));
-               if (p2 == NULL) {
-                       break;
-               }
-
-               /* get the two nybbles */
-               hinybble = PTR_DIFF(p1, hexchars);
-               lonybble = PTR_DIFF(p2, hexchars);
-
-               if (num_chars >= p_len) {
-                       break;
-               }
-
-               p[num_chars] = (hinybble << 4) | lonybble;
-               num_chars++;
-
-               p1 = NULL;
-               p2 = NULL;
+               i += 2;
+               num_chars += 1;
        }
+
        return num_chars;
 }