for(x=0,y=0;url[y];++x,++y)
{
- if((url[x] = url[y]) == '%')
+ if((url[x] = url[y]) == '%' && isxdigit(url[y+1]) && isxdigit(url[y+2]))
{
url[x] = x2c(&url[y+1]);
y+=2;
string CgiParse::url_encode(const char* s)
{
- static char badchars[]="\"\\+<>#%{}|^~[]`;/?:@=&";
+ static char badchars[]="\"\\+<>#%{}|^~[]`,;/?:@=&";
string ret;
for (; *s; s++) {
for(x=0,y=0;url[y];++x,++y)
{
- if((url[x] = url[y]) == '%')
+ if((url[x] = url[y]) == '%' && isxdigit(url[y+1]) && isxdigit(url[y+2]))
{
url[x] = x2c(&url[y+1]);
y+=2;
string CgiParse::url_encode(const char* s)
{
- static char badchars[]="\"\\+<>#%{}|^~[]()'`;/?:@=&";
+ static char badchars[]="\"\\+<>#%{}|^~[](),'`;/?:@=&";
string ret;
for (; *s; s++) {