wget: do not abort if "_" is encountered in a HTTP header
authorDenys Vlasenko <vda.linux@googlemail.com>
Mon, 1 Jul 2013 13:01:50 +0000 (15:01 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Mon, 1 Jul 2013 13:05:09 +0000 (15:05 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
networking/wget.c

index 4eafebe..ce2f514 100644 (file)
@@ -328,8 +328,16 @@ static char *gethdr(FILE *fp)
                return NULL;
 
        /* convert the header name to lower case */
-       for (s = G.wget_buf; isalnum(*s) || *s == '-' || *s == '.'; ++s) {
-               /* tolower for "A-Z", no-op for "0-9a-z-." */
+       for (s = G.wget_buf; isalnum(*s) || *s == '-' || *s == '.' || *s == '_'; ++s) {
+               /*
+                * No-op for 20-3f and 60-7f. "0-9a-z-." are in these ranges.
+                * 40-5f range ("@A-Z[\]^_") maps to 60-7f.
+                * "A-Z" maps to "a-z".
+                * "@[\]" can't occur in header names.
+                * "^_" maps to "~,DEL" (which is wrong).
+                * "^" was never seen yet, "_" was seen from web.archive.org
+                * (x-archive-orig-x_commoncrawl_Signature: HEXSTRING).
+                */
                *s |= 0x20;
        }