Browse code

webkernel: make uri_urldecode to unescape correctly normal ASCII characters (i.e. %40 to @)

Dario Rodriguez authored on 23/07/2014 20:34:28
Showing 1 changed files
... ...
@@ -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
         }