]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
ldb: Use hex_byte() in ldb_binary_decode()
authorVolker Lendecke <vl@samba.org>
Mon, 4 Jan 2021 12:55:01 +0000 (13:55 +0100)
committerStefan Metzmacher <metze@samba.org>
Tue, 2 Nov 2021 21:52:16 +0000 (21:52 +0000)
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
(cherry picked from commit b6a57c49c00a778f954aaf10db6ebe6dca8f5ae2)

lib/ldb/common/ldb_parse.c

index 7e15206b16879a072e66f9707c9eeeb266e4456d..f0045ad2093bbe8ac8fed75ed36ce7e84875ca5b 100644 (file)
  */
 #define LDB_MAX_PARSE_TREE_DEPTH 128
 
-static int ldb_parse_hex2char(const char *x)
-{
-       if (isxdigit(x[0]) && isxdigit(x[1])) {
-               const char h1 = x[0], h2 = x[1];
-               int c = 0;
-
-               if (h1 >= 'a') c = h1 - (int)'a' + 10;
-               else if (h1 >= 'A') c = h1 - (int)'A' + 10;
-               else if (h1 >= '0') c = h1 - (int)'0';
-               c = c << 4;
-               if (h2 >= 'a') c += h2 - (int)'a' + 10;
-               else if (h2 >= 'A') c += h2 - (int)'A' + 10;
-               else if (h2 >= '0') c += h2 - (int)'0';
-
-               return c;
-       }
-
-       return -1;
-}
-
 /*
 a filter is defined by:
                <filter> ::= '(' <filtercomp> ')'
@@ -101,10 +81,11 @@ struct ldb_val ldb_binary_decode(TALLOC_CTX *mem_ctx, const char *str)
 
        for (i=j=0;i<slen;i++) {
                if (str[i] == '\\') {
-                       int c;
+                       uint8_t c;
+                       bool ok;
 
-                       c = ldb_parse_hex2char(&str[i+1]);
-                       if (c == -1) {
+                       ok = hex_byte(&str[i+1], &c);
+                       if (!ok) {
                                talloc_free(ret.data);
                                memset(&ret, 0, sizeof(ret));
                                return ret;