]> granicus.if.org Git - php/commitdiff
Fix libmagic warnings
authorNikita Popov <nikita.ppv@gmail.com>
Thu, 11 Apr 2019 13:20:05 +0000 (15:20 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Thu, 11 Apr 2019 13:20:05 +0000 (15:20 +0200)
ext/fileinfo/libmagic.patch
ext/fileinfo/libmagic/apprentice.c
ext/fileinfo/libmagic/compress.c
ext/fileinfo/libmagic/magic.c

index 7f4e1f604702c16fc73cfb0a124b00f1cb110287..4619a8f8404a278e9f69bf98f9b28d938e165c25 100644 (file)
@@ -1,6 +1,6 @@
 diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
 --- libmagic.orig/apprentice.c 2018-03-11 01:46:42.000000000 +0100
-+++ libmagic/apprentice.c      2019-03-08 09:31:16.392796494 +0100
++++ libmagic/apprentice.c      2019-04-11 15:17:54.486688613 +0200
 @@ -2,7 +2,7 @@
   * Copyright (c) Ian F. Darwin 1986-1995.
   * Software written by Ian F. Darwin and others;
@@ -96,7 +96,18 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
      const char *, int);
  private struct mlist *mlist_alloc(void);
  private void mlist_free(struct mlist *);
-@@ -170,38 +179,7 @@
+@@ -136,10 +145,7 @@
+ private uint32_t swap4(uint32_t);
+ private uint64_t swap8(uint64_t);
+ private char *mkdbname(struct magic_set *, const char *, int);
+-private struct magic_map *apprentice_buf(struct magic_set *, struct magic *,
+-    size_t);
+ private struct magic_map *apprentice_map(struct magic_set *, const char *);
+-private int check_buffer(struct magic_set *, struct magic_map *, const char *);
+ private void apprentice_unmap(struct magic_map *);
+ private int apprentice_compile(struct magic_set *, struct magic_map *,
+     const char *);
+@@ -170,38 +176,7 @@
        { NULL, 0, NULL }
  };
  
@@ -136,7 +147,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
  
  struct type_tbl_s {
        const char name[16];
-@@ -409,7 +387,7 @@
+@@ -409,7 +384,7 @@
        struct mlist *ml;
  
        mlp->map = NULL;
@@ -145,7 +156,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                return -1;
  
        ml->map = idx == 0 ? map : NULL;
-@@ -430,10 +408,8 @@
+@@ -430,10 +405,8 @@
  apprentice_1(struct magic_set *ms, const char *fn, int action)
  {
        struct magic_map *map;
@@ -156,7 +167,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
  
        if (magicsize != FILE_MAGICSIZE) {
                file_error(ms, 0, "magic element size %lu != %lu",
-@@ -449,14 +425,15 @@
+@@ -449,14 +422,15 @@
                return apprentice_compile(ms, map, fn);
        }
  
@@ -176,7 +187,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                if (map == NULL)
                        return -1;
        }
-@@ -478,9 +455,6 @@
+@@ -478,9 +452,6 @@
                }
        }
        return 0;
@@ -186,7 +197,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
  }
  
  protected void
-@@ -491,10 +465,16 @@
+@@ -491,10 +462,16 @@
                return;
        for (i = 0; i < MAGIC_SETS; i++)
                mlist_free(ms->mlist[i]);
@@ -207,7 +218,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
  }
  
  protected struct magic_set *
-@@ -503,7 +483,7 @@
+@@ -503,7 +480,7 @@
        struct magic_set *ms;
        size_t i, len;
  
@@ -216,7 +227,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
            sizeof(struct magic_set)))) == NULL)
                return NULL;
  
-@@ -515,7 +495,7 @@
+@@ -515,7 +492,7 @@
        ms->o.buf = ms->o.pbuf = NULL;
        len = (ms->c.len = 10) * sizeof(*ms->c.li);
  
@@ -225,7 +236,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                goto free;
  
        ms->event_flags = 0;
-@@ -533,48 +513,35 @@
+@@ -533,48 +510,35 @@
        ms->bytes_max = FILE_BYTES_MAX;
        return ms;
  free:
@@ -287,7 +298,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                return NULL;
        }
        mlist->next = mlist->prev = mlist;
-@@ -593,60 +560,12 @@
+@@ -593,60 +557,12 @@
        for (ml = mlist->next; (next = ml->next) != NULL; ml = next) {
                if (ml->map)
                        apprentice_unmap(CAST(struct magic_map *, ml->map));
@@ -349,7 +360,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
  /* const char *fn: list of magic files and directories */
  protected int
  file_apprentice(struct magic_set *ms, const char *fn, int action)
-@@ -655,14 +574,31 @@
+@@ -655,14 +571,31 @@
        int fileerr, errs = -1;
        size_t i;
  
@@ -383,7 +394,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                file_oomem(ms, strlen(fn));
                return -1;
        }
-@@ -675,7 +611,7 @@
+@@ -675,7 +608,7 @@
                                mlist_free(ms->mlist[i]);
                                ms->mlist[i] = NULL;
                        }
@@ -392,7 +403,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                        return -1;
                }
        }
-@@ -692,7 +628,7 @@
+@@ -692,7 +625,7 @@
                fn = p;
        }
  
@@ -401,7 +412,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
  
        if (errs == -1) {
                for (i = 0; i < MAGIC_SETS; i++) {
-@@ -974,7 +910,7 @@
+@@ -974,7 +907,7 @@
        return val;
  }
  
@@ -410,7 +421,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
   * Sort callback for sorting entries by "strength" (basically length)
   */
  private int
-@@ -992,7 +928,7 @@
+@@ -992,7 +925,7 @@
                return 1;
  }
  
@@ -419,7 +430,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
   * Shows sorted patterns list in the order which is used for the matching
   */
  private void
-@@ -1088,7 +1024,7 @@
+@@ -1088,7 +1021,7 @@
                        mstart->flag |= BINTEST;
                if (mstart->str_flags & STRING_TEXTTEST)
                        mstart->flag |= TEXTTEST;
@@ -428,7 +439,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                if (mstart->flag & (TEXTTEST|BINTEST))
                        break;
  
-@@ -1120,7 +1056,7 @@
+@@ -1120,7 +1053,7 @@
  
                mset[i].max += ALLOC_INCR;
                if ((mp = CAST(struct magic_entry *,
@@ -437,7 +448,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                    NULL) {
                        file_oomem(ms, sizeof(*mp) * mset[i].max);
                        return -1;
-@@ -1141,13 +1077,19 @@
+@@ -1141,13 +1074,19 @@
  load_1(struct magic_set *ms, int action, const char *fn, int *errs,
     struct magic_entry_set *mset)
  {
@@ -461,7 +472,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                if (errno != ENOENT)
                        file_error(ms, errno, "cannot read magic file `%s'",
                                   fn);
-@@ -1157,8 +1099,7 @@
+@@ -1157,8 +1096,7 @@
  
        memset(&me, 0, sizeof(me));
        /* read and parse this file */
@@ -471,7 +482,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                if (len == 0) /* null line, garbage, etc */
                        continue;
                if (line[len - 1] == '\n') {
-@@ -1216,8 +1157,8 @@
+@@ -1216,8 +1154,8 @@
        }
        if (me.mp)
                (void)addentry(ms, &me, mset);
@@ -482,7 +493,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
  }
  
  /*
-@@ -1280,7 +1221,7 @@
+@@ -1280,7 +1218,7 @@
                                file_magwarn(ms,
                                    "level 0 \"default\" did not sort last");
                        }
@@ -491,7 +502,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                }
        }
  }
-@@ -1296,7 +1237,7 @@
+@@ -1296,7 +1234,7 @@
                mentrycount += me[i].cont_count;
  
        slen = sizeof(**ma) * mentrycount;
@@ -500,7 +511,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                file_oomem(ms, slen);
                return -1;
        }
-@@ -1318,8 +1259,8 @@
+@@ -1318,8 +1256,8 @@
        if (me == NULL)
                return;
        for (i = 0; i < nme; i++)
@@ -511,7 +522,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
  }
  
  private struct magic_map *
-@@ -1328,18 +1269,19 @@
+@@ -1328,18 +1266,19 @@
        int errs = 0;
        uint32_t i, j;
        size_t files = 0, maxfiles = 0;
@@ -536,7 +547,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
        {
                file_oomem(ms, sizeof(*map));
                return NULL;
-@@ -1351,24 +1293,26 @@
+@@ -1351,24 +1290,26 @@
                (void)fprintf(stderr, "%s\n", usg_hdr);
  
        /* load directory or file */
@@ -573,7 +584,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                                continue;
                        }
                        if (files >= maxfiles) {
-@@ -1376,23 +1320,22 @@
+@@ -1376,23 +1317,22 @@
                                maxfiles = (maxfiles + 1) * 2;
                                mlen = maxfiles * sizeof(*filearr);
                                if ((filearr = CAST(char **,
@@ -603,7 +614,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
        } else
                load_1(ms, action, fn, &errs, mset);
        if (errs)
-@@ -1833,7 +1776,7 @@
+@@ -1833,7 +1773,7 @@
         */
        while (*l == '>') {
                ++l;            /* step over */
@@ -612,7 +623,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
        }
  #ifdef ENABLE_CONDITIONALS
        if (cont_level == 0 || cont_level > last_cont_level)
-@@ -1859,7 +1802,7 @@
+@@ -1859,7 +1799,7 @@
                if (me->cont_count == me->max_count) {
                        struct magic *nm;
                        size_t cnt = me->max_count + ALLOC_CHUNK;
@@ -621,7 +632,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                            sizeof(*nm) * cnt))) == NULL) {
                                file_oomem(ms, sizeof(*nm) * cnt);
                                return -1;
-@@ -1874,7 +1817,7 @@
+@@ -1874,7 +1814,7 @@
                static const size_t len = sizeof(*m) * ALLOC_CHUNK;
                if (me->mp != NULL)
                        return 1;
@@ -630,7 +641,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                        file_oomem(ms, len);
                        return -1;
                }
-@@ -1916,17 +1859,6 @@
+@@ -1916,17 +1856,6 @@
                        file_magwarn(ms, "offset `%s' invalid", l);
                return -1;
        }
@@ -648,7 +659,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
          l = t;
  
        if (m->flag & INDIR) {
-@@ -2012,7 +1944,7 @@
+@@ -2012,7 +1941,7 @@
                        }
                        l = t;
                }
@@ -657,7 +668,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                    ((m->in_op & FILE_OPINDIRECT) && *l++ != ')')) {
                        if (ms->flags & MAGIC_CHECK)
                                file_magwarn(ms,
-@@ -2037,7 +1969,7 @@
+@@ -2037,7 +1966,7 @@
                /*
                 * Try it as a keyword type prefixed by "u"; match what
                 * follows the "u".  If that fails, try it as an SUS
@@ -666,7 +677,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                 */
                m->type = get_type(type_tbl, l + 1, &l);
                if (m->type == FILE_INVALID) {
-@@ -2077,7 +2009,7 @@
+@@ -2077,7 +2006,7 @@
                /* Not found - try it as a special keyword. */
                m->type = get_type(special_tbl, l, &l);
        }
@@ -675,7 +686,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
        if (m->type == FILE_INVALID) {
                if (ms->flags & MAGIC_CHECK)
                        file_magwarn(ms, "type `%s' invalid", l);
-@@ -2089,7 +2021,7 @@
+@@ -2089,7 +2018,7 @@
  
        m->mask_op = 0;
        if (*l == '~') {
@@ -684,7 +695,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                        m->mask_op |= FILE_OPINVERSE;
                else if (ms->flags & MAGIC_CHECK)
                        file_magwarn(ms, "'~' invalid for string types");
-@@ -2098,7 +2030,7 @@
+@@ -2098,7 +2027,7 @@
        m->str_range = 0;
        m->str_flags = m->type == FILE_PSTRING ? PSTRING_1_LE : 0;
        if ((op = get_op(*l)) != -1) {
@@ -693,7 +704,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                        int r;
  
                        if (op != FILE_OPDIVIDE) {
-@@ -2124,7 +2056,7 @@
+@@ -2124,7 +2053,7 @@
         * anything if mask = 0 (unless you have a better idea)
         */
        EATAB;
@@ -702,7 +713,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
        switch (*l) {
        case '>':
        case '<':
-@@ -2156,7 +2088,7 @@
+@@ -2156,7 +2085,7 @@
                break;
        default:
                m->reln = '=';  /* the default relation */
@@ -711,7 +722,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                    isspace((unsigned char)l[1])) || !l[1])) {
                        m->reln = *l;
                        ++l;
-@@ -2171,7 +2103,7 @@
+@@ -2171,7 +2100,7 @@
  
        /*
         * TODO finish this macro and start using it!
@@ -720,7 +731,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
         *      magwarn("offset too big"); }
         */
  
-@@ -2203,11 +2135,6 @@
+@@ -2203,11 +2132,6 @@
                if (check_format(ms, m) == -1)
                        return -1;
        }
@@ -732,7 +743,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
        m->mimetype[0] = '\0';          /* initialise MIME type to none */
        return 0;
  }
-@@ -2279,7 +2206,7 @@
+@@ -2279,7 +2203,7 @@
  
  private int
  parse_extra(struct magic_set *ms, struct magic_entry *me, const char *line,
@@ -741,7 +752,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
  {
        size_t i;
        const char *l = line;
-@@ -2291,7 +2218,7 @@
+@@ -2291,7 +2215,7 @@
                file_magwarn(ms, "Current entry already has a %s type "
                    "`%.*s', new type `%s'", name, (int)len, buf, l);
                return -1;
@@ -750,7 +761,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
  
        if (*m->desc == '\0') {
                file_magwarn(ms, "Current entry does not yet have a "
-@@ -2361,7 +2288,7 @@
+@@ -2361,7 +2285,7 @@
        struct magic *m = &me->mp[0];
  
        return parse_extra(ms, me, line,
@@ -759,7 +770,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
            sizeof(m->mimetype), "MIME", "+-/.$?:{}", 1);
  }
  
-@@ -2428,7 +2355,7 @@
+@@ -2428,7 +2352,7 @@
                        if (*ptr++ != 'l')
                                goto invalid;
                }
@@ -768,7 +779,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                switch (*ptr++) {
  #ifdef STRICT_FORMAT  /* "long" formats are int formats for us */
                /* so don't accept the 'l' modifier */
-@@ -2446,7 +2373,7 @@
+@@ -2446,7 +2370,7 @@
                        default:
                                goto invalid;
                        }
@@ -777,7 +788,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                /*
                 * Don't accept h and hh modifiers. They make writing
                 * magic entries more complicated, for very little benefit
-@@ -2502,7 +2429,7 @@
+@@ -2502,7 +2426,7 @@
                default:
                        goto invalid;
                }
@@ -786,7 +797,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
        case FILE_FMT_FLOAT:
        case FILE_FMT_DOUBLE:
                if (*ptr == '-')
-@@ -2521,11 +2448,11 @@
+@@ -2521,11 +2445,11 @@
                case 'g':
                case 'G':
                        return 0;
@@ -800,7 +811,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
  
        case FILE_FMT_STR:
                if (*ptr == '-')
-@@ -2537,14 +2464,14 @@
+@@ -2537,14 +2461,14 @@
                        while (isdigit((unsigned char )*ptr))
                                ptr++;
                }
@@ -817,7 +828,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
        default:
                /* internal error */
                abort();
-@@ -2555,7 +2482,7 @@
+@@ -2555,7 +2479,7 @@
        *estr = "too long";
        return -1;
  }
@@ -826,7 +837,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
  /*
   * Check that the optional printf format in description matches
   * the type of the magic.
-@@ -2578,7 +2505,7 @@
+@@ -2578,7 +2502,7 @@
  
        if (m->type >= file_nformats) {
                file_magwarn(ms, "Internal error inconsistency between "
@@ -835,7 +846,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                return -1;
        }
        if (file_formats[m->type] == FILE_FMT_NONE) {
-@@ -2598,7 +2525,7 @@
+@@ -2598,7 +2522,7 @@
                    file_names[m->type], m->desc);
                return -1;
        }
@@ -844,7 +855,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
        for (; *ptr; ptr++) {
                if (*ptr == '%') {
                        file_magwarn(ms,
-@@ -2611,9 +2538,9 @@
+@@ -2611,9 +2535,9 @@
        return 0;
  }
  
@@ -857,7 +868,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
   * just after the number read.  Return 0 for success, non-zero for failure.
   */
  private int
-@@ -2640,14 +2567,19 @@
+@@ -2640,14 +2564,19 @@
                        return -1;
                }
                if (m->type == FILE_REGEX) {
@@ -884,7 +895,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                }
                return 0;
        default:
-@@ -2770,7 +2702,7 @@
+@@ -2770,7 +2699,7 @@
                        default:
                                if (warn) {
                                        if (isprint((unsigned char)c)) {
@@ -893,7 +904,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                                                 * ``relations'' */
                                                if (strchr("<>&^=!", c) == NULL
                                                    && (m->type != FILE_REGEX ||
-@@ -2975,7 +2907,7 @@
+@@ -2975,7 +2904,7 @@
  {
        const char *l = *p;
  
@@ -902,7 +913,15 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                l++;
  
        switch (LOWCASE(*l)) {
-@@ -3001,7 +2933,7 @@
+@@ -2993,6 +2922,7 @@
+       *p = l;
+ }
++#if 0
+ /*
+  * handle a buffer containing a compiled file.
+  */
+@@ -3001,7 +2931,7 @@
  {
        struct magic_map *map;
  
@@ -911,7 +930,15 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                file_oomem(ms, sizeof(*map));
                return NULL;
        }
-@@ -3022,79 +2954,145 @@
+@@ -3014,6 +2944,7 @@
+       }
+       return map;
+ }
++#endif
+ /*
+  * handle a compiled file.
+@@ -3022,81 +2953,148 @@
  private struct magic_map *
  apprentice_map(struct magic_set *ms, const char *fn)
  {
@@ -926,11 +953,11 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
 +      size_t i;
 +      php_stream *stream = NULL;
 +      php_stream_statbuf st;
-+
-+
  
 -      fd = -1;
 -      if ((map = CAST(struct magic_map *, calloc(1, sizeof(*map)))) == NULL) {
++
++
 +      if ((map = CAST(struct magic_map *, ecalloc(1, sizeof(*map)))) == NULL) {
                file_oomem(ms, sizeof(*map));
 -              goto error;
@@ -1093,7 +1120,10 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
 +      return NULL;
  }
  
++#if 0
  private int
+ check_buffer(struct magic_set *ms, struct magic_map *map, const char *dbname)
+ {
 @@ -3120,7 +3118,7 @@
                version = ptr[1];
        if (version != VERSIONNO) {
@@ -1103,7 +1133,15 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                    VERSIONNO, dbname, version);
                return -1;
        }
-@@ -3161,7 +3159,6 @@
+@@ -3152,6 +3150,7 @@
+                       byteswap(map->magic[i], map->nmagic[i]);
+       return 0;
+ }
++#endif
+ /*
+  * handle an mmaped file.
+@@ -3161,7 +3160,6 @@
  {
        static const size_t nm = sizeof(*map->nmagic) * MAGIC_SETS;
        static const size_t m = sizeof(**map->magic);
@@ -1111,7 +1149,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
        size_t len;
        char *dbname;
        int rv = -1;
-@@ -3170,14 +3167,17 @@
+@@ -3170,14 +3168,17 @@
                struct magic m;
                uint32_t h[2 + MAGIC_SETS];
        } hdr;
@@ -1132,7 +1170,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                file_error(ms, errno, "cannot open `%s'", dbname);
                goto out;
        }
-@@ -3186,26 +3186,25 @@
+@@ -3186,26 +3187,25 @@
        hdr.h[1] = VERSIONNO;
        memcpy(hdr.h + 2, map->nmagic, nm);
  
@@ -1167,7 +1205,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
        return rv;
  }
  
-@@ -3239,16 +3238,18 @@
+@@ -3239,16 +3239,18 @@
        q++;
        /* Compatibility with old code that looked in .mime */
        if (ms->flags & MAGIC_MIME) {
@@ -1192,7 +1230,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
  
        /* Compatibility with old code that looked in .mime */
        if (strstr(fn, ".mime") != NULL)
-@@ -3274,8 +3275,8 @@
+@@ -3274,8 +3276,8 @@
  swap2(uint16_t sv)
  {
        uint16_t rv;
@@ -1203,7 +1241,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
        d[0] = s[1];
        d[1] = s[0];
        return rv;
-@@ -3288,8 +3289,8 @@
+@@ -3288,8 +3290,8 @@
  swap4(uint32_t sv)
  {
        uint32_t rv;
@@ -1214,7 +1252,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
        d[0] = s[3];
        d[1] = s[2];
        d[2] = s[1];
-@@ -3304,8 +3305,8 @@
+@@ -3304,8 +3306,8 @@
  swap8(uint64_t sv)
  {
        uint64_t rv;
@@ -1225,7 +1263,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
  #if 0
        d[0] = s[3];
        d[1] = s[2];
-@@ -3338,7 +3339,7 @@
+@@ -3338,7 +3340,7 @@
        m->offset = swap4((int32_t)m->offset);
        m->in_offset = swap4((uint32_t)m->in_offset);
        m->lineno = swap4((uint32_t)m->lineno);
@@ -1234,7 +1272,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
                m->str_range = swap4(m->str_range);
                m->str_flags = swap4(m->str_flags);
        }
-@@ -3348,7 +3349,7 @@
+@@ -3348,7 +3350,7 @@
        }
  }
  
@@ -1693,7 +1731,7 @@ diff -u libmagic.orig/cdf_time.c libmagic/cdf_time.c
        (void)snprintf(buf, 26, "*Bad* %#16.16" INT64_T_FORMAT "x\n",
 diff -u libmagic.orig/compress.c libmagic/compress.c
 --- libmagic.orig/compress.c   2017-11-02 21:25:39.000000000 +0100
-+++ libmagic/compress.c        2019-03-08 09:31:16.392796494 +0100
++++ libmagic/compress.c        2019-04-11 15:16:47.060067956 +0200
 @@ -2,7 +2,7 @@
   * Copyright (c) Ian F. Darwin 1986-1995.
   * Software written by Ian F. Darwin and others;
@@ -1746,7 +1784,7 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
  #include <sys/ioctl.h>
  #endif
  #ifdef HAVE_SYS_WAIT_H
-@@ -62,51 +60,12 @@
+@@ -62,56 +60,18 @@
  #if defined(HAVE_SYS_TIME_H)
  #include <sys/time.h>
  #endif
@@ -1800,7 +1838,20 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
  
  #define gzip_flags "-cd"
  #define lrzip_flags "-do"
-@@ -169,7 +128,7 @@
+ #define lzip_flags gzip_flags
++#ifdef PHP_FILEINFO_UNCOMPRESS
+ static const char *gzip_args[] = {
+       "gzip", gzip_flags, NULL
+ };
+@@ -163,13 +123,14 @@
+       { RCAST(const void *, zlibcmp), 0, zlib_args },         /* zlib */
+ #endif
+ };
++#endif
+ #define OKDATA        0
+ #define NODATA        1
  #define ERRDATA       2
  
  private ssize_t swrite(int, const void *, size_t);
@@ -1809,7 +1860,7 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
  private size_t ncompr = sizeof(compr) / sizeof(compr[0]);
  private int uncompressbuf(int, size_t, size_t, const unsigned char *,
      unsigned char **, size_t *);
-@@ -179,12 +138,12 @@
+@@ -179,12 +140,12 @@
  private int uncompressgzipped(const unsigned char *, unsigned char **, size_t,
      size_t *);
  #endif
@@ -1825,7 +1876,7 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
  {
        unsigned char *newbuf = NULL;
        size_t i, nsz;
-@@ -192,9 +151,6 @@
+@@ -192,9 +153,6 @@
        file_pushbuf_t *pb;
        int urv, prv, rv = 0;
        int mime = ms->flags & MAGIC_MIME;
@@ -1835,7 +1886,7 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
  #ifdef HAVE_SIGNAL_H
        sig_t osigpipe;
  #endif
-@@ -226,7 +182,7 @@
+@@ -226,7 +184,7 @@
                switch (urv) {
                case OKDATA:
                case ERRDATA:
@@ -1844,7 +1895,7 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
                        ms->flags &= ~MAGIC_COMPRESS;
                        if (urv == ERRDATA)
                                prv = file_printf(ms, "%s ERROR: %s",
-@@ -253,10 +209,10 @@
+@@ -253,10 +211,10 @@
                                goto error;
                        if ((rbuf = file_pop_buffer(ms, pb)) != NULL) {
                                if (file_printf(ms, "%s", rbuf) == -1) {
@@ -1857,7 +1908,7 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
                        }
                        if (!mime && file_printf(ms, ")") == -1)
                                goto error;
-@@ -277,7 +233,8 @@
+@@ -277,7 +235,8 @@
  #ifdef HAVE_SIGNAL_H
        (void)signal(SIGPIPE, osigpipe);
  #endif
@@ -1867,7 +1918,7 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
        ms->flags |= MAGIC_COMPRESS;
        DPRINTF("Zmagic returns %d\n", rv);
        return rv;
-@@ -312,7 +269,7 @@
+@@ -312,7 +271,7 @@
   * `safe' read for sockets and pipes.
   */
  protected ssize_t
@@ -1876,7 +1927,7 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
  {
        ssize_t rv;
  #ifdef FIONREAD
-@@ -360,7 +317,7 @@
+@@ -360,7 +319,7 @@
  
  nocheck:
        do
@@ -1885,7 +1936,7 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
                case -1:
                        if (errno == EINTR)
                                continue;
-@@ -437,13 +394,14 @@
+@@ -437,13 +396,14 @@
                return -1;
        }
        (void)close(tfd);
@@ -1902,7 +1953,7 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
  #ifdef BUILTIN_DECOMPRESS
  
  #define FHCRC         (1 << 1)
-@@ -494,7 +452,7 @@
+@@ -494,7 +454,7 @@
        int rc;
        z_stream z;
  
@@ -1911,7 +1962,7 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
                return makeerror(newch, n, "No buffer, %s", strerror(errno));
  
        z.next_in = CCAST(Bytef *, old);
-@@ -518,7 +476,7 @@
+@@ -518,7 +478,7 @@
        rc = inflateEnd(&z);
        if (rc != Z_OK)
                goto err;
@@ -1920,7 +1971,7 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
        /* let's keep the nul-terminate tradition */
        (*newch)[*n] = '\0';
  
-@@ -586,7 +544,7 @@
+@@ -586,7 +546,7 @@
        int status;
  
        closefd(fdp[STDIN_FILENO], 0);
@@ -1929,7 +1980,7 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
         * fork again, to avoid blocking because both
         * pipes filled
         */
-@@ -689,13 +647,13 @@
+@@ -689,13 +649,13 @@
                        fdp[STDIN_FILENO][0] = fd;
                        (void) lseek(fd, (off_t)0, SEEK_SET);
                }
@@ -1945,7 +1996,7 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
                    compr[method].argv[0], strerror(errno));
                exit(1);
                /*NOTREACHED*/
-@@ -711,7 +669,7 @@
+@@ -711,7 +671,7 @@
                if (fd == -1)
                        writechild(fdp, old, *n);
  
@@ -1954,7 +2005,7 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
                if (*newch == NULL) {
                        rv = makeerror(newch, n, "No buffer, %s",
                            strerror(errno));
-@@ -730,7 +688,7 @@
+@@ -730,7 +690,7 @@
                        r = filter_error(*newch, r);
                        break;
                }
@@ -1963,7 +2014,7 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
                if  (r == 0)
                        rv = makeerror(newch, n, "Read failed, %s",
                            strerror(errno));
-@@ -738,27 +696,5 @@
+@@ -738,27 +698,5 @@
                        rv = makeerror(newch, n, "No data");
                goto err;
        }
@@ -3161,7 +3212,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c
  
 diff -u libmagic.orig/magic.c libmagic/magic.c
 --- libmagic.orig/magic.c      2017-08-28 15:39:18.000000000 +0200
-+++ libmagic/magic.c   2019-03-08 09:31:16.396796480 +0100
++++ libmagic/magic.c   2019-04-11 15:19:30.857295866 +0200
 @@ -25,11 +25,6 @@
   * SUCH DAMAGE.
   */
@@ -3198,18 +3249,17 @@ diff -u libmagic.orig/magic.c libmagic/magic.c
  
  #if defined(HAVE_UTIMES)
  # include <sys/time.h>
-@@ -71,194 +71,23 @@
+@@ -71,194 +71,21 @@
  #endif
  #endif
  
+-private void close_and_restore(const struct magic_set *, const char *, int,
+-    const struct stat *);
 +#ifdef PHP_WIN32
 +# undef S_IFLNK
 +# undef S_IFIFO
 +#endif
 +
- private void close_and_restore(const struct magic_set *, const char *, int,
--    const struct stat *);
-+    const zend_stat_t *);
  private int unreadable_info(struct magic_set *, mode_t, const char *);
 +#if 0
  private const char* get_default_magic(void);
@@ -3401,7 +3451,7 @@ diff -u libmagic.orig/magic.c libmagic/magic.c
  public struct magic_set *
  magic_open(int flags)
  {
-@@ -304,20 +133,6 @@
+@@ -304,20 +131,6 @@
        return file_apprentice(ms, magicfile, FILE_LOAD);
  }
  
@@ -3422,8 +3472,11 @@ diff -u libmagic.orig/magic.c libmagic/magic.c
  public int
  magic_compile(struct magic_set *ms, const char *magicfile)
  {
-@@ -344,7 +159,7 @@
+@@ -342,9 +155,10 @@
+       return file_apprentice(ms, magicfile, FILE_LIST);
+ }
  
++#if 0
  private void
  close_and_restore(const struct magic_set *ms, const char *name, int fd,
 -    const struct stat *sb)
@@ -3431,9 +3484,11 @@ diff -u libmagic.orig/magic.c libmagic/magic.c
  {
        if (fd == STDIN_FILENO || name == NULL)
                return;
-@@ -375,7 +190,6 @@
+@@ -374,8 +188,8 @@
+ #endif
        }
  }
++#endif
  
 -#ifndef COMPILE_ONLY
  
index 94e4302d619e031a017b80b355f5fc403d579a8b..3355d3cc1eb5d14ca8e23e2a41863ad59628628c 100644 (file)
@@ -145,10 +145,7 @@ private uint16_t swap2(uint16_t);
 private uint32_t swap4(uint32_t);
 private uint64_t swap8(uint64_t);
 private char *mkdbname(struct magic_set *, const char *, int);
-private struct magic_map *apprentice_buf(struct magic_set *, struct magic *,
-    size_t);
 private struct magic_map *apprentice_map(struct magic_set *, const char *);
-private int check_buffer(struct magic_set *, struct magic_map *, const char *);
 private void apprentice_unmap(struct magic_map *);
 private int apprentice_compile(struct magic_set *, struct magic_map *,
     const char *);
@@ -2925,6 +2922,7 @@ eatsize(const char **p)
        *p = l;
 }
 
+#if 0
 /*
  * handle a buffer containing a compiled file.
  */
@@ -2946,6 +2944,7 @@ apprentice_buf(struct magic_set *ms, struct magic *buf, size_t len)
        }
        return map;
 }
+#endif
 
 /*
  * handle a compiled file.
@@ -3095,6 +3094,7 @@ error:
        return NULL;
 }
 
+#if 0
 private int
 check_buffer(struct magic_set *ms, struct magic_map *map, const char *dbname)
 {
@@ -3150,6 +3150,7 @@ check_buffer(struct magic_set *ms, struct magic_map *map, const char *dbname)
                        byteswap(map->magic[i], map->nmagic[i]);
        return 0;
 }
+#endif
 
 /*
  * handle an mmaped file.
index 024b569ac2f33102ab2e6d59b94a3218ec3d448b..a66cf806bc653a939d4a5e6ce2fcde45f38f28dd 100644 (file)
@@ -71,6 +71,7 @@ typedef void (*sig_t)(int);
 #define lrzip_flags "-do"
 #define lzip_flags gzip_flags
 
+#ifdef PHP_FILEINFO_UNCOMPRESS
 static const char *gzip_args[] = {
        "gzip", gzip_flags, NULL
 };
@@ -122,6 +123,7 @@ private const struct {
        { RCAST(const void *, zlibcmp), 0, zlib_args },         /* zlib */
 #endif
 };
+#endif
 
 #define OKDATA         0
 #define NODATA 1
index 51570c2a3751f98e3261111dd65a1df5143486ef..1cff11a5c0f7a8eacf53a6483492d5c53352e3af 100644 (file)
@@ -76,8 +76,6 @@ FILE_RCSID("@(#)$File: magic.c,v 1.102 2017/08/28 13:39:18 christos Exp $")
 # undef S_IFIFO
 #endif
 
-private void close_and_restore(const struct magic_set *, const char *, int,
-    const zend_stat_t *);
 private int unreadable_info(struct magic_set *, mode_t, const char *);
 #if 0
 private const char* get_default_magic(void);
@@ -157,6 +155,7 @@ magic_list(struct magic_set *ms, const char *magicfile)
        return file_apprentice(ms, magicfile, FILE_LIST);
 }
 
+#if 0
 private void
 close_and_restore(const struct magic_set *ms, const char *name, int fd,
     const zend_stat_t *sb)
@@ -189,6 +188,7 @@ close_and_restore(const struct magic_set *ms, const char *name, int fd,
 #endif
        }
 }
+#endif
 
 
 /*