]> git.saurik.com Git - apt.git/commitdiff
Hex2Digit: Do not use isxdigit()
authorNiels Thykier <nthykier@debian.org>
Sun, 27 Dec 2015 02:16:55 +0000 (03:16 +0100)
committerJulian Andres Klode <jak@debian.org>
Sun, 27 Dec 2015 02:16:55 +0000 (03:16 +0100)
We directly check if we are a hex digit in HexDigit, so use that
information.

[jak@debian.org: Commit message wording]

apt-pkg/contrib/strutl.cc

index de049602f1143f43072569c49895075add5bf08c..457bd73a25a98035157b35b9a1ab2a90a243f1c6 100644 (file)
@@ -1106,7 +1106,7 @@ static int HexDigit(int c)
       return c - 'a' + 10;
    if (c >= 'A' && c <= 'F')
       return c - 'A' + 10;
-   return 0;
+   return -1;
 }
                                                                        /*}}}*/
 // Hex2Num - Convert a long hex number into a buffer                   /*{{{*/
@@ -1121,11 +1121,16 @@ bool Hex2Num(const string &Str,unsigned char *Num,unsigned int Length)
    int J = 0;
    for (string::const_iterator I = Str.begin(); I != Str.end();J++, I += 2)
    {
-      if (isxdigit(*I) == 0 || isxdigit(I[1]) == 0)
+      int first_half = HexDigit(I[0]);
+      int second_half;
+      if (first_half < 0)
         return false;
       
-      Num[J] = HexDigit(I[0]) << 4;
-      Num[J] += HexDigit(I[1]);
+      second_half = HexDigit(I[1]);
+      if (second_half < 0)
+        return false;
+      Num[J] = first_half << 4;
+      Num[J] += second_half;
    }
    
    return true;