diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/http_chunks.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/http_chunks.c b/lib/http_chunks.c index 0d72793ce..e0887483a 100644 --- a/lib/http_chunks.c +++ b/lib/http_chunks.c @@ -81,6 +81,14 @@ */ +/* Check for an ASCII hex digit. + We avoid the use of isxdigit to accommodate non-ASCII hosts. */ +static bool Curl_isxdigit(char digit) +{ + return (digit >= 0x30 && digit <= 0x39) /* 0-9 */ + || (digit >= 0x41 && digit <= 0x46) /* A-F */ + || (digit >= 0x61 && digit <= 0x66); /* a-f */ +} void Curl_httpchunk_init(struct connectdata *conn) { @@ -127,11 +135,7 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn, while(length) { switch(ch->state) { case CHUNK_HEX: - /* Check for an ASCII hex digit. - We avoid the use of isxdigit to accommodate non-ASCII hosts. */ - if((*datap >= 0x30 && *datap <= 0x39) /* 0-9 */ - || (*datap >= 0x41 && *datap <= 0x46) /* A-F */ - || (*datap >= 0x61 && *datap <= 0x66)) { /* a-f */ + if(Curl_isxdigit(*datap)) { if(ch->hexindex < MAXNUM_SIZE) { ch->hexbuffer[ch->hexindex] = *datap; datap++; |