From: Wilfried Göesgens Date: Fri, 13 Mar 2009 21:37:35 +0000 (+0000) Subject: * suport lower case hex digits too X-Git-Tag: v7.86~1352 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=861c24fd883fcb626ade4c729aba590af48d8d14 * suport lower case hex digits too * return ? on error. * de-inline... --- diff --git a/libcitadel/lib/mime_parser.c b/libcitadel/lib/mime_parser.c index 76452935a..66f8c0c78 100644 --- a/libcitadel/lib/mime_parser.c +++ b/libcitadel/lib/mime_parser.c @@ -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; }