]> sjero.net Git - wget/blobdiff - src/url.c
[svn] Fix #20894: URL comparisons should not compare percent-encoded and
[wget] / src / url.c
index 683a7745f1b7eeb9ea7d3c9eddf8ac90b8c06976..d721501ab0f53527c0f4337e66e9d81017cd3f4c 100644 (file)
--- a/src/url.c
+++ b/src/url.c
@@ -1939,10 +1939,7 @@ getchar_from_escaped_string (const char *str, char *c)
   
   if (p[0] == '%')
     {
-      if (p[1] == 0)
-        return 0; /* error: invalid string */
-
-      if (p[1] == '%')
+      if (!ISXDIGIT(p[1]) || !ISXDIGIT(p[2]))
         {
           *c = '%';
           return 1;
@@ -1953,8 +1950,13 @@ getchar_from_escaped_string (const char *str, char *c)
             return 0; /* error: invalid string */
 
           *c = X2DIGITS_TO_NUM (p[1], p[2]);
-
-          return 3;
+          if (URL_RESERVED_CHAR(*c))
+            {
+              *c = '%';
+              return 1;
+            }
+          else
+            return 3;
         }
     }
   else