]> sjero.net Git - wget/blobdiff - src/url.c
[svn] Don't unescape %00.
[wget] / src / url.c
index e89704d7b625ab21b6ea26b54270545235c2717a..f77d8ad9e9a8dbdd56891d7f70b7237adb9aea2d 100644 (file)
--- a/src/url.c
+++ b/src/url.c
@@ -175,10 +175,16 @@ url_unescape (char *s)
        }
       else
        {
+         char c;
          /* Do nothing if '%' is not followed by two hex digits. */
          if (!h[1] || !h[2] || !(ISXDIGIT (h[1]) && ISXDIGIT (h[2])))
            goto copychar;
-         *t = X2DIGITS_TO_NUM (h[1], h[2]);
+         c = X2DIGITS_TO_NUM (h[1], h[2]);
+         /* Don't unescape %00 because there is no way to insert it
+            into a C string without effectively truncating it. */
+         if (c == '\0')
+           goto copychar;
+         *t = c;
          h += 2;
        }
     }