diff options
author | Daniel Stenberg <daniel@haxx.se> | 2006-10-17 21:32:56 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2006-10-17 21:32:56 +0000 |
commit | 44d84ac1646cf04ccc2c1a736f3c9d1644ccacec (patch) | |
tree | 78c8960a291ba0a11548ab34e88a9a7b1bbcee3f /lib/escape.c | |
parent | 930f9bd5342e6d514f9ba5b1303762c100621965 (diff) | |
download | curl-44d84ac1646cf04ccc2c1a736f3c9d1644ccacec.tar.gz |
Avoid typecasting a signed char to an int when using is*() functions, as that
could very well cause a negate number get passed in and thus cause reading
outside of the array usually used for this purpose.
We avoid this by using the uppercase macro versions introduced just now that
does some extra crazy typecasts to avoid byte codes > 127 to cause negative
int values.
Diffstat (limited to 'lib/escape.c')
-rw-r--r-- | lib/escape.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/lib/escape.c b/lib/escape.c index c569902f6..9552b0f31 100644 --- a/lib/escape.c +++ b/lib/escape.c @@ -116,10 +116,6 @@ char *curl_easy_escape(CURL *handle, const char *string, int inlength) return ns; } -#define ishex(in) ((in >= 'a' && in <= 'f') || \ - (in >= 'A' && in <= 'F') || \ - (in >= '0' && in <= '9')) - char *curl_easy_unescape(CURL *handle, const char *string, int length, int *olen) { @@ -138,7 +134,7 @@ char *curl_easy_unescape(CURL *handle, const char *string, int length, while(--alloc > 0) { in = *string; - if(('%' == in) && ishex(string[1]) && ishex(string[2])) { + if(('%' == in) && ISXDIGIT(string[1]) && ISXDIGIT(string[2])) { /* this is two hexadecimal digits following a '%' */ char hexstr[3]; char *ptr; |