... | ... |
@@ -930,10 +930,15 @@ uri_urldecode(char *s) |
930 | 930 |
s[o]=' '; |
931 | 931 |
else if(s[i]=='%' && (a=s[i+1])!='\0' && (b=s[i+2])!='\0' && ISHEXNIBBLE(a) && ISHEXNIBBLE(b)) { |
932 | 932 |
n=(HEXNIBBLE2BIN(a)<<4)|HEXNIBBLE2BIN(b); |
933 |
- s[o]=128|64|(n>>6); |
|
934 |
- s[o+1]=128|(n&0x3f); |
|
935 |
- i+=2; |
|
936 |
- o++; |
|
933 |
+ if(n>=128) { |
|
934 |
+ s[o]=128|64|(n>>6); |
|
935 |
+ s[o+1]=128|(n&0x3f); |
|
936 |
+ i+=2; |
|
937 |
+ o++; |
|
938 |
+ } else { |
|
939 |
+ s[o]=n; |
|
940 |
+ i+=2; |
|
941 |
+ } |
|
937 | 942 |
} else |
938 | 943 |
s[o]=s[i]; |
939 | 944 |
} |