diff options
| author | Anatol Belski <ab@php.net> | 2014-12-30 20:28:13 +0100 |
|---|---|---|
| committer | Anatol Belski <ab@php.net> | 2014-12-30 20:28:13 +0100 |
| commit | fa0b5e2c6d9cc355c5bab7831c887fb29ed61b87 (patch) | |
| tree | f2ddc4e5fda442d1e15fd4a587add9c317edf496 | |
| parent | a78eaddbe00d5832ccca8d48a745e1d36e67874c (diff) | |
| download | php-git-fa0b5e2c6d9cc355c5bab7831c887fb29ed61b87.tar.gz | |
updated libmagic.patch
| -rw-r--r-- | ext/fileinfo/libmagic.patch | 223 |
1 files changed, 107 insertions, 116 deletions
diff --git a/ext/fileinfo/libmagic.patch b/ext/fileinfo/libmagic.patch index 2fe559f123..7ea003e7c0 100644 --- a/ext/fileinfo/libmagic.patch +++ b/ext/fileinfo/libmagic.patch @@ -1,6 +1,6 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c --- libmagic.orig/apprentice.c Tue Nov 19 22:01:12 2013 -+++ libmagic/apprentice.c Sun Sep 21 18:30:39 2014 ++++ libmagic/apprentice.c Sun Dec 28 16:29:05 2014 @@ -29,6 +29,8 @@ * apprentice - make one pass through /etc/magic, learning its secrets. */ @@ -287,7 +287,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c NULL) { file_oomem(ms, sizeof(*mp) * mset[i].max); return -1; -@@ -939,13 +952,20 @@ +@@ -939,13 +952,19 @@ load_1(struct magic_set *ms, int action, const char *fn, int *errs, struct magic_entry_set *mset) { @@ -303,7 +303,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c - if (f == NULL) { + php_stream *stream; + -++ ++ + ms->file = fn; + stream = php_stream_open_wrapper((char *)fn, "rb", REPORT_ERRORS, NULL); + @@ -311,7 +311,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c if (errno != ENOENT) file_error(ms, errno, "cannot read magic file `%s'", fn); -@@ -955,8 +975,7 @@ +@@ -955,8 +974,7 @@ memset(&me, 0, sizeof(me)); /* read and parse this file */ @@ -321,7 +321,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c if (len == 0) /* null line, garbage, etc */ continue; if (line[len - 1] == '\n') { -@@ -1014,8 +1033,7 @@ +@@ -1014,8 +1032,7 @@ } if (me.mp) (void)addentry(ms, &me, mset); @@ -331,7 +331,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c } /* -@@ -1094,7 +1112,7 @@ +@@ -1094,7 +1111,7 @@ mentrycount += me[i].cont_count; slen = sizeof(**ma) * mentrycount; @@ -340,7 +340,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c file_oomem(ms, slen); return -1; } -@@ -1116,8 +1134,8 @@ +@@ -1116,8 +1133,8 @@ if (me == NULL) return; for (i = 0; i < nme; i++) @@ -351,7 +351,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c } private struct magic_map * -@@ -1126,18 +1144,20 @@ +@@ -1126,18 +1143,19 @@ int errs = 0; uint32_t i, j; size_t files = 0, maxfiles = 0; @@ -366,7 +366,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c + php_stream *dir; + php_stream_dirent d; + -+ + memset(mset, 0, sizeof(mset)); ms->flags |= MAGIC_CHECK; /* Enable checks for parsed files */ @@ -376,7 +376,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c { file_oomem(ms, sizeof(*map)); return NULL; -@@ -1148,22 +1168,26 @@ +@@ -1148,22 +1166,26 @@ (void)fprintf(stderr, "%s\n", usg_hdr); /* load directory or file */ @@ -411,7 +411,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c continue; } if (files >= maxfiles) { -@@ -1171,23 +1195,23 @@ +@@ -1171,23 +1193,22 @@ maxfiles = (maxfiles + 1) * 2; mlen = maxfiles * sizeof(*filearr); if ((filearr = CAST(char **, @@ -420,7 +420,6 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c file_oomem(ms, mlen); - free(mfn); - closedir(dir); -+ efree(mfn); + php_stream_closedir(dir); errs++; goto out; @@ -442,7 +441,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c } else load_1(ms, action, fn, &errs, mset); if (errs) -@@ -1226,9 +1250,9 @@ +@@ -1226,9 +1247,9 @@ if (errs) { for (j = 0; j < MAGIC_SETS; j++) { if (map->magic[j]) @@ -454,7 +453,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c return NULL; } return map; -@@ -1248,7 +1272,7 @@ +@@ -1248,7 +1269,7 @@ * the sign extension must have happened. */ case FILE_BYTE: @@ -463,7 +462,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c break; case FILE_SHORT: case FILE_BESHORT: -@@ -1516,7 +1540,7 @@ +@@ -1516,7 +1537,7 @@ if (me->cont_count == me->max_count) { struct magic *nm; size_t cnt = me->max_count + ALLOC_CHUNK; @@ -472,7 +471,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c sizeof(*nm) * cnt))) == NULL) { file_oomem(ms, sizeof(*nm) * cnt); return -1; -@@ -1531,7 +1555,7 @@ +@@ -1531,7 +1552,7 @@ static const size_t len = sizeof(*m) * ALLOC_CHUNK; if (me->mp != NULL) return 1; @@ -481,7 +480,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c file_oomem(ms, len); return -1; } -@@ -1704,7 +1728,7 @@ +@@ -1704,7 +1725,7 @@ m->type = get_standard_integer_type(l, &l); else if (*l == 's' && !isalpha((unsigned char)l[1])) { m->type = FILE_STRING; @@ -490,7 +489,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c } } } -@@ -1717,6 +1741,10 @@ +@@ -1717,6 +1738,10 @@ if (m->type == FILE_INVALID) { if (ms->flags & MAGIC_CHECK) file_magwarn(ms, "type `%s' invalid", l); @@ -501,7 +500,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c return -1; } -@@ -1725,7 +1753,7 @@ +@@ -1725,7 +1750,7 @@ m->mask_op = 0; if (*l == '~') { @@ -510,7 +509,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"); -@@ -1734,7 +1762,7 @@ +@@ -1734,7 +1759,7 @@ m->str_range = 0; m->str_flags = m->type == FILE_PSTRING ? PSTRING_1_LE : 0; if ((op = get_op(*l)) != -1) { @@ -519,7 +518,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c uint64_t val; ++l; m->mask_op |= op; -@@ -1925,11 +1953,6 @@ +@@ -1925,11 +1950,6 @@ if (check_format(ms, m) == -1) return -1; } @@ -531,7 +530,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c m->mimetype[0] = '\0'; /* initialise MIME type to none */ return 0; } -@@ -2575,59 +2598,76 @@ +@@ -2575,59 +2595,75 @@ private struct magic_map * apprentice_map(struct magic_set *ms, const char *fn) { @@ -549,7 +548,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c - 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)); + efree(map); @@ -628,7 +627,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c if (*ptr != MAGICNO) { if (swap4(*ptr) != MAGICNO) { file_error(ms, 0, "bad magic in `%s'", dbname); -@@ -2641,17 +2681,29 @@ +@@ -2641,17 +2677,29 @@ else version = ptr[1]; if (version != VERSIONNO) { @@ -666,7 +665,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c } map->magic[0] = CAST(struct magic *, map->p) + 1; nentries = 0; -@@ -2664,22 +2716,29 @@ +@@ -2664,22 +2712,29 @@ map->magic[i + 1] = map->magic[i] + map->nmagic[i]; nentries += map->nmagic[i]; } @@ -701,13 +700,13 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c return NULL; } -@@ -2700,14 +2759,19 @@ +@@ -2700,14 +2755,18 @@ char *dbname; int rv = -1; uint32_t i; + php_stream *stream; + -+ + - dbname = mkdbname(ms, fn, 1); + dbname = mkdbname(ms, fn, 0); @@ -723,7 +722,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c file_error(ms, errno, "cannot open `%s'", dbname); goto out; } -@@ -2717,31 +2781,33 @@ +@@ -2717,31 +2776,33 @@ goto out; } @@ -763,14 +762,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c return rv; } -@@ -2754,6 +2820,7 @@ - { - const char *p, *q; - char *buf; -+ - if (strip) { - if ((p = strrchr(fn, '/')) != NULL) -@@ -2775,16 +2842,18 @@ +@@ -2775,16 +2836,18 @@ q++; /* Compatibility with old code that looked in .mime */ if (ms->flags & MAGIC_MIME) { @@ -795,7 +787,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c /* Compatibility with old code that looked in .mime */ if (strstr(p, ".mime") != NULL) -@@ -2874,7 +2943,7 @@ +@@ -2874,7 +2937,7 @@ m->offset = swap4((uint32_t)m->offset); m->in_offset = swap4((uint32_t)m->in_offset); m->lineno = swap4((uint32_t)m->lineno); @@ -806,7 +798,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c } diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c --- libmagic.orig/ascmagic.c Thu Feb 13 00:20:53 2014 -+++ libmagic/ascmagic.c Wed Aug 27 12:35:45 2014 ++++ libmagic/ascmagic.c Sun Nov 9 19:16:18 2014 @@ -139,7 +139,7 @@ /* malloc size is a conservative overestimate; could be improved, or at least realloced after conversion. */ @@ -828,7 +820,7 @@ diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c } diff -u libmagic.orig/cdf.c libmagic/cdf.c --- libmagic.orig/cdf.c Tue Feb 26 17:20:42 2013 -+++ libmagic/cdf.c Wed Aug 27 12:35:45 2014 ++++ libmagic/cdf.c Sun Nov 9 19:16:18 2014 @@ -35,7 +35,7 @@ #include "file.h" @@ -1079,7 +1071,7 @@ diff -u libmagic.orig/cdf.c libmagic/cdf.c } else { diff -u libmagic.orig/cdf.h libmagic/cdf.h --- libmagic.orig/cdf.h Thu Jun 21 00:19:55 2012 -+++ libmagic/cdf.h Wed Aug 27 12:35:45 2014 ++++ libmagic/cdf.h Sun Nov 9 19:16:18 2014 @@ -35,10 +35,12 @@ #ifndef _H_CDF_ #define _H_CDF_ @@ -1132,7 +1124,7 @@ diff -u libmagic.orig/cdf.h libmagic/cdf.h int cdf_read_summary_info(const cdf_info_t *, const cdf_header_t *, diff -u libmagic.orig/cdf_time.c libmagic/cdf_time.c --- libmagic.orig/cdf_time.c Thu Jun 21 00:18:33 2012 -+++ libmagic/cdf_time.c Wed Aug 27 12:35:45 2014 ++++ libmagic/cdf_time.c Sun Nov 9 19:16:18 2014 @@ -96,7 +96,7 @@ } @@ -1192,7 +1184,7 @@ diff -u libmagic.orig/cdf_time.c libmagic/cdf_time.c static const char *ref = "Sat Apr 23 01:30:00 1977"; diff -u libmagic.orig/compress.c libmagic/compress.c --- libmagic.orig/compress.c Sun Jan 5 16:55:21 2014 -+++ libmagic/compress.c Wed Aug 27 12:35:45 2014 ++++ libmagic/compress.c Sun Nov 9 19:16:18 2014 @@ -32,6 +32,7 @@ * uncompress(method, old, n, newch) - uncompress old into new, * using method, return sizeof new @@ -1355,7 +1347,7 @@ diff -u libmagic.orig/compress.c libmagic/compress.c +#endif /* if PHP_FILEINFO_UNCOMPRESS */ diff -u libmagic.orig/elfclass.h libmagic/elfclass.h --- libmagic.orig/elfclass.h Mon Feb 18 19:33:14 2013 -+++ libmagic/elfclass.h Wed Aug 27 12:35:45 2014 ++++ libmagic/elfclass.h Sun Nov 9 19:16:18 2014 @@ -37,7 +37,7 @@ case ET_CORE: flags |= FLAGS_IS_CORE; @@ -1385,7 +1377,7 @@ diff -u libmagic.orig/elfclass.h libmagic/elfclass.h fsize, &flags, elf_getu16(swap, elfhdr.e_machine), diff -u libmagic.orig/file.h libmagic/file.h --- libmagic.orig/file.h Thu Feb 13 00:20:53 2014 -+++ libmagic/file.h Wed Aug 27 12:35:45 2014 ++++ libmagic/file.h Wed Dec 10 12:00:53 2014 @@ -33,11 +33,9 @@ #ifndef __file_h__ #define __file_h__ @@ -1454,7 +1446,7 @@ diff -u libmagic.orig/file.h libmagic/file.h ((t) == FILE_STRING || \ (t) == FILE_PSTRING || \ (t) == FILE_BESTRING16 || \ -@@ -405,28 +407,23 @@ +@@ -405,28 +407,21 @@ /* Type for Unicode characters */ typedef unsigned long unichar; @@ -1478,8 +1470,8 @@ diff -u libmagic.orig/file.h libmagic/file.h - __attribute__((__format__(__printf__, 2, 3))); +protected int file_printf(struct magic_set *, const char *, ...); protected int file_reset(struct magic_set *); - protected int file_tryelf(struct magic_set *, int, const unsigned char *, - size_t); +-protected int file_tryelf(struct magic_set *, int, const unsigned char *, +- size_t); protected int file_trycdf(struct magic_set *, int, const unsigned char *, size_t); -#if HAVE_FORK @@ -1487,7 +1479,7 @@ diff -u libmagic.orig/file.h libmagic/file.h protected int file_zmagic(struct magic_set *, int, const char *, const unsigned char *, size_t); #endif -@@ -444,16 +441,13 @@ +@@ -444,16 +439,13 @@ protected int file_magicfind(struct magic_set *, const char *, struct mlist *); protected uint64_t file_signextend(struct magic_set *, struct magic *, uint64_t); @@ -1508,7 +1500,7 @@ diff -u libmagic.orig/file.h libmagic/file.h protected void file_showstr(FILE *, const char *, size_t); protected size_t file_mbswidth(const char *); protected const char *file_getbuffer(struct magic_set *); -@@ -463,16 +457,14 @@ +@@ -463,16 +455,14 @@ size_t *); protected size_t file_pstring_length_size(const struct magic *); protected size_t file_pstring_get_length(const struct magic *, const char *); @@ -1526,7 +1518,7 @@ diff -u libmagic.orig/file.h libmagic/file.h #ifndef HAVE_STRERROR extern int sys_nerr; -@@ -485,20 +477,10 @@ +@@ -485,20 +475,10 @@ #define strtoul(a, b, c) strtol(a, b, c) #endif @@ -1549,7 +1541,7 @@ diff -u libmagic.orig/file.h libmagic/file.h size_t strlcat(char *, const char *, size_t); #endif #ifndef HAVE_STRCASESTR -@@ -535,6 +517,14 @@ +@@ -535,6 +515,14 @@ #endif #else #define FILE_RCSID(id) @@ -1566,7 +1558,7 @@ diff -u libmagic.orig/file.h libmagic/file.h #endif /* __file_h__ */ diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c --- libmagic.orig/fsmagic.c Sun Dec 1 20:22:13 2013 -+++ libmagic/fsmagic.c Wed Aug 27 12:35:45 2014 ++++ libmagic/fsmagic.c Thu Dec 18 10:09:03 2014 @@ -59,27 +59,21 @@ # define minor(dev) ((dev) & 0xff) #endif @@ -1609,7 +1601,7 @@ diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c private int handle_mime(struct magic_set *ms, int mime, const char *str) { -@@ -96,42 +90,39 @@ +@@ -96,42 +90,38 @@ } protected int @@ -1623,7 +1615,7 @@ diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c - ssize_t nch; - struct stat tstatbuf; -#endif -+ + if (ms->flags & MAGIC_APPLE) return 0; - if (fn == NULL) @@ -1674,7 +1666,7 @@ diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c } ret = 1; -@@ -154,30 +145,24 @@ +@@ -154,30 +144,24 @@ } switch (sb->st_mode & S_IFMT) { @@ -1723,7 +1715,7 @@ diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c if (file_printf(ms, "%scharacter special (%d/%d/%d)", COMMA, major(sb->st_rdev), dv_unit(sb->st_rdev), dv_subunit(sb->st_rdev)) == -1) -@@ -192,44 +177,11 @@ +@@ -192,44 +176,11 @@ if (file_printf(ms, "%scharacter special", COMMA) == -1) return -1; #endif @@ -1771,7 +1763,7 @@ diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c #ifdef S_IFIFO case S_IFIFO: if((ms->flags & MAGIC_DEVICES) != 0) -@@ -252,79 +204,14 @@ +@@ -252,79 +203,14 @@ #endif #ifdef S_IFLNK case S_IFLNK: @@ -1855,7 +1847,7 @@ diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c #ifdef S_IFSOCK #ifndef __COHERENT__ case S_IFSOCK: -@@ -348,15 +235,15 @@ +@@ -348,15 +234,15 @@ * size for raw disk partitions. (If the block special device * really has zero length, the fact that it is empty will be * detected and reported correctly when we read the file.) @@ -1878,7 +1870,7 @@ diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c ret = 0; break; -@@ -366,9 +253,5 @@ +@@ -366,9 +252,5 @@ /*NOTREACHED*/ } @@ -1890,7 +1882,7 @@ diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c } diff -u libmagic.orig/funcs.c libmagic/funcs.c --- libmagic.orig/funcs.c Thu Feb 13 00:20:53 2014 -+++ libmagic/funcs.c Sat Aug 30 10:39:10 2014 ++++ libmagic/funcs.c Thu Dec 18 10:09:03 2014 @@ -27,7 +27,7 @@ #include "file.h" @@ -2065,7 +2057,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c if ((ms->flags & MAGIC_DEBUG) != 0) (void)fprintf(stderr, "zmagic %d\n", m); goto done_encoding; -@@ -221,12 +219,17 @@ +@@ -221,12 +219,16 @@ } /* Check if we have a CDF file */ @@ -2076,7 +2068,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c - goto done; + if ((ms->flags & MAGIC_NO_CHECK_CDF) == 0) { + php_socket_t fd; -+ + if (stream && SUCCESS == php_stream_cast(stream, PHP_STREAM_AS_FD, (void **)&fd, 0)) { ++ if (stream && SUCCESS == php_stream_cast(stream, PHP_STREAM_AS_FD, (void **)&fd, 0)) { + if ((m = file_trycdf(ms, fd, ubuf, nb)) != 0) { + if ((ms->flags & MAGIC_DEBUG) != 0) + (void)fprintf(stderr, "cdf %d\n", m); @@ -2087,7 +2079,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c /* try soft magic tests */ if ((ms->flags & MAGIC_NO_CHECK_SOFT) == 0) -@@ -268,7 +271,7 @@ +@@ -268,7 +270,7 @@ if ((ms->flags & MAGIC_NO_CHECK_ENCODING) == 0) { if (looks_text == 0) if ((m = file_ascmagic_with_encoding( ms, ubuf, @@ -2096,7 +2088,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c != 0) { if ((ms->flags & MAGIC_DEBUG) != 0) (void)fprintf(stderr, -@@ -300,7 +303,6 @@ +@@ -300,7 +302,6 @@ return m; } @@ -2104,7 +2096,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c protected int file_reset(struct magic_set *ms) -@@ -310,11 +312,11 @@ +@@ -310,11 +311,11 @@ return -1; } if (ms->o.buf) { @@ -2118,7 +2110,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c ms->o.pbuf = NULL; } ms->event_flags &= ~EVENT_HAD_ERR; -@@ -333,7 +335,7 @@ +@@ -333,7 +334,7 @@ protected const char * file_getbuffer(struct magic_set *ms) { @@ -2127,7 +2119,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c size_t psize, len; if (ms->event_flags & EVENT_HAD_ERR) -@@ -348,15 +350,13 @@ +@@ -348,15 +349,13 @@ /* * 4 is for octal representation, + 1 is for NUL */ len = strlen(ms->o.buf); if (len > (SIZE_MAX - 1) / 4) { @@ -2144,7 +2136,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c #if defined(HAVE_WCHAR_H) && defined(HAVE_MBRTOWC) && defined(HAVE_WCWIDTH) { -@@ -416,8 +416,8 @@ +@@ -416,8 +415,8 @@ if (level >= ms->c.len) { len = (ms->c.len += 20) * sizeof(*ms->c.li); ms->c.li = CAST(struct level_info *, (ms->c.li == NULL) ? @@ -2155,7 +2147,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c if (ms->c.li == NULL) { file_oomem(ms, len); return -1; -@@ -437,32 +437,42 @@ +@@ -437,32 +436,41 @@ return ms->o.buf == NULL ? 0 : strlen(ms->o.buf); } @@ -2170,7 +2162,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c + zend_string *res; + zval repl; + int rep_cnt = 0; -+ + (void)setlocale(LC_CTYPE, "C"); - rc = regcomp(&rx, pat, REG_EXTENDED); - if (rc) { @@ -2220,7 +2212,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c } diff -u libmagic.orig/magic.c libmagic/magic.c --- libmagic.orig/magic.c Sun Dec 1 20:22:13 2013 -+++ libmagic/magic.c Wed Aug 27 20:49:37 2014 ++++ libmagic/magic.c Thu Dec 18 10:09:03 2014 @@ -25,11 +25,6 @@ * SUCH DAMAGE. */ @@ -2396,7 +2388,7 @@ diff -u libmagic.orig/magic.c libmagic/magic.c } /* -@@ -332,31 +334,42 @@ +@@ -332,31 +334,41 @@ { if (ms == NULL) return NULL; @@ -2424,7 +2416,7 @@ diff -u libmagic.orig/magic.c libmagic/magic.c - int ispipe = 0; - off_t pos = (off_t)-1; + int no_in_stream = 0; -++ ++ + if (!inname && !stream) { + return NULL; + } @@ -2446,7 +2438,7 @@ diff -u libmagic.orig/magic.c libmagic/magic.c case -1: /* error */ goto done; case 0: /* nothing found */ -@@ -366,74 +379,44 @@ +@@ -366,74 +378,44 @@ goto done; } @@ -2544,7 +2536,7 @@ diff -u libmagic.orig/magic.c libmagic/magic.c return rv == 0 ? file_getbuffer(ms) : NULL; } -@@ -447,14 +430,13 @@ +@@ -447,14 +429,13 @@ return NULL; /* * The main work is done here! @@ -2562,8 +2554,17 @@ diff -u libmagic.orig/magic.c libmagic/magic.c public const char * magic_error(struct magic_set *ms) diff -u libmagic.orig/magic.h libmagic/magic.h ---- libmagic.orig/magic.h Wed Feb 19 10:53:11 2014 -+++ libmagic/magic.h Wed Aug 27 12:35:45 2014 +--- libmagic.orig/magic.h Tue Feb 11 16:30:44 2014 ++++ libmagic/magic.h Sun Nov 9 19:16:18 2014 +@@ -75,7 +75,7 @@ + #define MAGIC_NO_CHECK_FORTRAN 0x000000 /* Don't check ascii/fortran */ + #define MAGIC_NO_CHECK_TROFF 0x000000 /* Don't check ascii/troff */ + +-#define MAGIC_VERSION 516 /* This implementation */ ++#define MAGIC_VERSION 517 /* This implementation */ + + + #ifdef __cplusplus @@ -88,6 +88,7 @@ const char *magic_getpath(const char *, int); @@ -2582,7 +2583,7 @@ diff -u libmagic.orig/magic.h libmagic/magic.h diff -u libmagic.orig/print.c libmagic/print.c --- libmagic.orig/print.c Tue Feb 26 19:25:00 2013 -+++ libmagic/print.c Wed Aug 27 12:35:45 2014 ++++ libmagic/print.c Tue Dec 30 19:41:55 2014 @@ -28,13 +28,17 @@ /* * print.c - debugging printout routines @@ -2601,7 +2602,7 @@ diff -u libmagic.orig/print.c libmagic/print.c #include <string.h> #include <stdarg.h> #include <stdlib.h> -@@ -43,188 +47,28 @@ +@@ -43,188 +47,30 @@ #endif #include <time.h> @@ -2780,8 +2781,9 @@ diff -u libmagic.orig/print.c libmagic/print.c file_magwarn(struct magic_set *ms, const char *f, ...) { va_list va; -+ char *expanded_format; -+ ++ char *expanded_format = NULL; ++ int expanded_len; + - /* cuz we use stdout for most, stderr here */ - (void) fflush(stdout); - @@ -2791,17 +2793,19 @@ diff -u libmagic.orig/print.c libmagic/print.c - (void) fprintf(stderr, "Warning: "); va_start(va, f); - (void) vfprintf(stderr, f, va); -+ if (vasprintf(&expanded_format, f, va)); /* silence */ ++ expanded_len = vasprintf(&expanded_format, f, va); va_end(va); - (void) fputc('\n', stderr); + -+ php_error_docref(NULL, E_NOTICE, "Warning: %s", expanded_format); ++ if (expanded_len >= 0 && expanded_format) { ++ php_error_docref(NULL, E_NOTICE, "Warning: %s", expanded_format); + -+ free(expanded_format); ++ free(expanded_format); ++ } } protected const char * -@@ -235,7 +79,7 @@ +@@ -235,7 +81,7 @@ struct tm *tm; if (flags & FILE_T_WINDOWS) { @@ -2812,7 +2816,7 @@ diff -u libmagic.orig/print.c libmagic/print.c } diff -u libmagic.orig/readcdf.c libmagic/readcdf.c --- libmagic.orig/readcdf.c Tue Jan 7 04:13:42 2014 -+++ libmagic/readcdf.c Wed Oct 22 17:56:13 2014 ++++ libmagic/readcdf.c Sun Nov 9 19:16:18 2014 @@ -26,11 +26,15 @@ #include "file.h" @@ -3030,7 +3034,7 @@ diff -u libmagic.orig/readcdf.c libmagic/readcdf.c if (str != NULL) { diff -u libmagic.orig/softmagic.c libmagic/softmagic.c --- libmagic.orig/softmagic.c Thu Feb 13 00:20:53 2014 -+++ libmagic/softmagic.c Fri Sep 19 16:29:55 2014 ++++ libmagic/softmagic.c Thu Dec 18 10:09:03 2014 @@ -50,6 +50,11 @@ #include <locale.h> #endif @@ -3082,7 +3086,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c m = &magic[magindex]; ms->line = m->lineno; /* for messages */ -@@ -350,46 +356,27 @@ +@@ -350,46 +356,26 @@ private int check_fmt(struct magic_set *ms, struct magic *m) { @@ -3093,7 +3097,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c + int re_options, rv = -1; + pcre_extra *re_extra; + zend_string *pattern; -++ ++ if (strchr(m->desc, '%') == NULL) return 0; @@ -3139,7 +3143,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c private int32_t mprint(struct magic_set *ms, struct magic *m) { -@@ -618,13 +605,13 @@ +@@ -618,13 +604,13 @@ char *cp; int rval; @@ -3155,7 +3159,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c if (rval == -1) return -1; -@@ -870,16 +857,16 @@ +@@ -870,16 +856,16 @@ if (m->num_mask) \ switch (m->mask_op & FILE_OPS_MASK) { \ case FILE_OPADD: \ @@ -3176,7 +3180,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c break; \ } \ -@@ -931,10 +918,18 @@ +@@ -931,10 +917,18 @@ return 1; } case FILE_PSTRING: { @@ -3198,7 +3202,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c while (len--) *ptr1++ = *ptr2++; *ptr1 = '\0'; -@@ -1046,7 +1041,7 @@ +@@ -1046,7 +1040,7 @@ private int mcopy(struct magic_set *ms, union VALUETYPE *p, int type, int indir, @@ -3207,7 +3211,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c { /* * Note: FILE_SEARCH and FILE_REGEX do not actually copy -@@ -1066,15 +1061,24 @@ +@@ -1066,15 +1060,24 @@ const char *last; /* end of search region */ const char *buf; /* start of search region */ const char *end; @@ -3234,7 +3238,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c /* mget() guarantees buf <= last */ for (lines = linecnt, b = buf; lines && b < end && ((b = CAST(const char *, -@@ -1087,7 +1091,7 @@ +@@ -1087,7 +1090,7 @@ b++; } if (lines) @@ -3243,7 +3247,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c ms->search.s = buf; ms->search.s_len = last - buf; -@@ -1158,7 +1162,6 @@ +@@ -1158,7 +1161,6 @@ int *need_separator, int *returnval) { uint32_t soffset, offset = ms->offset; @@ -3251,7 +3255,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c int rv, oneed_separator, in_type; char *sbuf, *rbuf; union VALUETYPE *p = &ms->ms_value; -@@ -1170,17 +1173,13 @@ +@@ -1170,17 +1172,13 @@ } if (mcopy(ms, p, m->type, m->flag & INDIR, s, (uint32_t)(offset + o), @@ -3271,7 +3275,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c } if (m->flag & INDIR) { -@@ -1672,16 +1671,13 @@ +@@ -1672,16 +1670,13 @@ if ((ms->flags & MAGIC_DEBUG) != 0) fprintf(stderr, "indirect +offs=%u\n", offset); } @@ -3289,7 +3293,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c } } -@@ -1755,11 +1751,21 @@ +@@ -1755,11 +1750,21 @@ ms->offset = soffset; if (rv == 1) { if ((ms->flags & (MAGIC_MIME|MAGIC_APPLE)) == 0 && @@ -3314,7 +3318,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c } return rv; -@@ -1875,6 +1881,41 @@ +@@ -1875,6 +1880,41 @@ return file_strncmp(a, b, len, flags); } @@ -3356,7 +3360,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c private int magiccheck(struct magic_set *ms, struct magic *m) { -@@ -2035,63 +2076,112 @@ +@@ -2035,63 +2075,111 @@ break; } case FILE_REGEX: { @@ -3369,7 +3373,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c + zval pattern; + int options = 0; + pcre_cache_entry *pce; -+ + ++ + options |= PCRE_MULTILINE; + + if (m->str_flags & STRING_IGNORE_CASE) { @@ -3522,7 +3526,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c case FILE_INDIRECT: diff -u libmagic.orig/strcasestr.c libmagic/strcasestr.c --- libmagic.orig/strcasestr.c Thu Dec 5 17:57:50 2013 -+++ libmagic/strcasestr.c Wed Aug 27 12:35:45 2014 ++++ libmagic/strcasestr.c Sun Nov 9 19:16:18 2014 @@ -37,6 +37,8 @@ __RCSID("$NetBSD: strncasecmp.c,v 1.2 2007/06/04 18:19:27 christos Exp $"); #endif /* LIBC_SCCS and not lint */ @@ -3532,16 +3536,3 @@ diff -u libmagic.orig/strcasestr.c libmagic/strcasestr.c #include <assert.h> #include <ctype.h> #include <string.h> -diff --git libmagic/file.h libmagic/file.h -index 0a5c19c..2b2405f 100644 ---- libmagic/file.h -+++ libmagic/file.h -@@ -419,8 +419,6 @@ protected int file_pipe2file(struct magic_set *, int, const void *, size_t); - protected int file_replace(struct magic_set *, const char *, const char *); - protected int file_printf(struct magic_set *, const char *, ...); - protected int file_reset(struct magic_set *); --protected int file_tryelf(struct magic_set *, int, const unsigned char *, -- size_t); - protected int file_trycdf(struct magic_set *, int, const unsigned char *, - size_t); - #ifdef PHP_FILEINFO_UNCOMPRESS |
