]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
WARC reader: avoid use of isblank()
authorMartin Matuska <martin@matuska.org>
Fri, 24 Feb 2017 13:53:46 +0000 (14:53 +0100)
committerMartin Matuska <martin@matuska.org>
Fri, 24 Feb 2017 14:23:49 +0000 (15:23 +0100)
Fixes #874

libarchive/archive_read_support_format_warc.c

index 5e22438d268b264934cb9f0f855e75bb86a69ff5..b1624651426cf294fc5ab8599021183462a90fe4 100644 (file)
@@ -543,7 +543,7 @@ xstrpisotime(const char *s, char **endptr)
 
        /* as a courtesy to our callers, and since this is a non-standard
         * routine, we skip leading whitespace */
-       while (isblank((unsigned char)*s))
+       while (*s == ' ' || *s == '\t')
                ++s;
 
        /* read year */
@@ -589,6 +589,7 @@ static unsigned int
 _warc_rdver(const char *buf, size_t bsz)
 {
        static const char magic[] = "WARC/";
+       const char *c;
        unsigned int ver = 0U;
        unsigned int end = 0U;
 
@@ -615,11 +616,12 @@ _warc_rdver(const char *buf, size_t bsz)
                 * WARC below version 0.12 has a space-separated header
                 * WARC 0.12 and above terminates the version with a CRLF
                 */
+               c = buf + 3U + end;
                if (ver >= 1200U) {
-                       if (memcmp(buf + 3U + end, "\r\n", 2U) != 0)
+                       if (memcmp(c, "\r\n", 2U) != 0)
                                ver = 0U;
                } else if (ver < 1200U) {
-                       if (!isblank(*(buf + 3U + end)))
+                       if (*c != ' ' && *c != '\t')
                                ver = 0U;
                }
        }
@@ -643,7 +645,7 @@ _warc_rdtyp(const char *buf, size_t bsz)
        }
 
        /* overread whitespace */
-       while (val < eol && isblank((unsigned char)*val))
+       while (val < eol && (*val == ' ' || *val == '\t'))
                ++val;
 
        if (val + 8U == eol) {
@@ -673,7 +675,7 @@ _warc_rduri(const char *buf, size_t bsz)
                return res;
        }
 
-       while (val < eol && isblank((unsigned char)*val))
+       while (val < eol && (*val == ' ' || *val == '\t'))
                ++val;
 
        /* overread URL designators */
@@ -731,7 +733,7 @@ _warc_rdlen(const char *buf, size_t bsz)
        }
 
        /* skip leading whitespace */
-       while (val < eol && isblank(*val))
+       while (val < eol && (*val == ' ' || *val == '\t'))
                val++;
        /* there must be at least one digit */
        if (!isdigit(*val))