* suport lower case hex digits too
authorWilfried Göesgens <willi@citadel.org>
Fri, 13 Mar 2009 21:37:35 +0000 (21:37 +0000)
committerWilfried Göesgens <willi@citadel.org>
Fri, 13 Mar 2009 21:37:35 +0000 (21:37 +0000)
* return ? on error.
* de-inline...

libcitadel/lib/mime_parser.c

index 76452935a6280cd6ef92e5b27d3e1d8a3f28d4b9..66f8c0c782d70f4e14871303b9060565f501f8ca 100644 (file)
@@ -71,24 +71,32 @@ char *fixed_partnum(char *supplied_partnum) {
 }
 
 
-inline unsigned int decode_hex(char *Source)
+unsigned int decode_hex(char *Source)
 {
        int ret = 0;
        if (*Source  < 'A') {
                ret += (*Source - '0');
        }
+       else if (*Source > 'Z') {
+               ret += (*Source - 'a' + 10);
+       }
        else {
                ret += (*Source - 'A' + 10);
        }
+
        ret = ret << 4;
+
        if (*(Source + 1) < 'A') {
                ret += (*(Source + 1) - '0');
        }
+       else if (*(Source + 1) > 'Z') {
+               ret += (*(Source + 1) - 'a' + 10);
+       }
        else {
                ret += (*(Source + 1) - 'A' + 10);
        }
        if (ret > 255)
-               return 0;
+               return '?';
        return ret;
 }