summaryrefslogtreecommitdiff
path: root/ext/fileinfo
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2014-03-31 17:24:15 +0200
committerAnatol Belski <ab@php.net>2014-03-31 17:24:15 +0200
commite265df460d4829492c1eab69723c0f2dc31c809e (patch)
treecf0253ed838165dcc437ee33eaa3660c476c7056 /ext/fileinfo
parent3f6073602bcb17bf144cbc7092fb57738c1f2065 (diff)
downloadphp-git-e265df460d4829492c1eab69723c0f2dc31c809e.tar.gz
updated libmagic.patch
Diffstat (limited to 'ext/fileinfo')
-rw-r--r--ext/fileinfo/libmagic.patch110
1 files changed, 57 insertions, 53 deletions
diff --git a/ext/fileinfo/libmagic.patch b/ext/fileinfo/libmagic.patch
index c83e4726e0..a9af5398f5 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 Fri Feb 21 00:21:27 2014
++++ libmagic/apprentice.c Mon Mar 31 17:15:53 2014
@@ -29,6 +29,8 @@
* apprentice - make one pass through /etc/magic, learning its secrets.
*/
@@ -180,7 +180,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
return NULL;
}
-@@ -505,22 +498,24 @@
+@@ -505,22 +498,26 @@
{
if (map == NULL)
return;
@@ -194,12 +194,14 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
- free(map->p);
- free(map);
+ if (map->p != php_magic_database) {
-+ int j;
-+ for (j = 0; j < MAGIC_SETS; j++) {
-+ if (map->magic[j])
-+ efree(map->magic[j]);
-+ }
-+ if (map->p != NULL) {
++ if (map->p == NULL) {
++ int j;
++ for (j = 0; j < MAGIC_SETS; j++) {
++ if (map->magic[j]) {
++ efree(map->magic[j]);
++ }
++ }
++ } else {
+ efree(map->p);
+ }
+ }
@@ -215,7 +217,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
return NULL;
}
mlist->next = mlist->prev = mlist;
-@@ -539,10 +534,10 @@
+@@ -539,10 +536,10 @@
struct mlist *next = ml->next;
if (ml->map)
apprentice_unmap(ml->map);
@@ -228,7 +230,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
}
/* const char *fn: list of magic files and directories */
-@@ -555,12 +550,28 @@
+@@ -555,12 +552,28 @@
file_reset(ms);
@@ -258,7 +260,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
file_oomem(ms, strlen(fn));
return -1;
}
-@@ -575,7 +586,7 @@
+@@ -575,7 +588,7 @@
mlist_free(ms->mlist[i]);
while (i != 0);
}
@@ -267,7 +269,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
return -1;
}
}
-@@ -592,7 +603,7 @@
+@@ -592,7 +605,7 @@
fn = p;
}
@@ -276,7 +278,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
if (errs == -1) {
for (i = 0; i < MAGIC_SETS; i++) {
-@@ -918,7 +929,7 @@
+@@ -918,7 +931,7 @@
mset[i].max += ALLOC_INCR;
if ((mp = CAST(struct magic_entry *,
@@ -285,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 +950,20 @@
+@@ -939,13 +952,20 @@
load_1(struct magic_set *ms, int action, const char *fn, int *errs,
struct magic_entry_set *mset)
{
@@ -310,7 +312,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 +973,7 @@
+@@ -955,8 +975,7 @@
memset(&me, 0, sizeof(me));
/* read and parse this file */
@@ -320,7 +322,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 +1031,7 @@
+@@ -1014,8 +1033,7 @@
}
if (me.mp)
(void)addentry(ms, &me, mset);
@@ -330,7 +332,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
}
/*
-@@ -1094,7 +1110,7 @@
+@@ -1094,7 +1112,7 @@
mentrycount += me[i].cont_count;
slen = sizeof(**ma) * mentrycount;
@@ -339,7 +341,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
file_oomem(ms, slen);
return -1;
}
-@@ -1116,8 +1132,8 @@
+@@ -1116,8 +1134,8 @@
if (me == NULL)
return;
for (i = 0; i < nme; i++)
@@ -350,7 +352,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
}
private struct magic_map *
-@@ -1126,18 +1142,20 @@
+@@ -1126,18 +1144,20 @@
int errs = 0;
uint32_t i, j;
size_t files = 0, maxfiles = 0;
@@ -375,7 +377,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
{
file_oomem(ms, sizeof(*map));
return NULL;
-@@ -1148,22 +1166,26 @@
+@@ -1148,22 +1168,26 @@
(void)fprintf(stderr, "%s\n", usg_hdr);
/* load directory or file */
@@ -409,7 +411,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
continue;
}
if (files >= maxfiles) {
-@@ -1171,23 +1193,23 @@
+@@ -1171,23 +1195,23 @@
maxfiles = (maxfiles + 1) * 2;
mlen = maxfiles * sizeof(*filearr);
if ((filearr = CAST(char **,
@@ -440,7 +442,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
} else
load_1(ms, action, fn, &errs, mset);
if (errs)
-@@ -1226,9 +1248,9 @@
+@@ -1226,9 +1250,9 @@
if (errs) {
for (j = 0; j < MAGIC_SETS; j++) {
if (map->magic[j])
@@ -452,7 +454,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
return NULL;
}
return map;
-@@ -1516,7 +1538,7 @@
+@@ -1516,7 +1540,7 @@
if (me->cont_count == me->max_count) {
struct magic *nm;
size_t cnt = me->max_count + ALLOC_CHUNK;
@@ -461,7 +463,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
sizeof(*nm) * cnt))) == NULL) {
file_oomem(ms, sizeof(*nm) * cnt);
return -1;
-@@ -1531,7 +1553,7 @@
+@@ -1531,7 +1555,7 @@
static const size_t len = sizeof(*m) * ALLOC_CHUNK;
if (me->mp != NULL)
return 1;
@@ -470,7 +472,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
file_oomem(ms, len);
return -1;
}
-@@ -1704,7 +1726,7 @@
+@@ -1704,7 +1728,7 @@
m->type = get_standard_integer_type(l, &l);
else if (*l == 's' && !isalpha((unsigned char)l[1])) {
m->type = FILE_STRING;
@@ -479,7 +481,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
}
}
}
-@@ -1717,6 +1739,10 @@
+@@ -1717,6 +1741,10 @@
if (m->type == FILE_INVALID) {
if (ms->flags & MAGIC_CHECK)
file_magwarn(ms, "type `%s' invalid", l);
@@ -490,7 +492,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
return -1;
}
-@@ -1725,7 +1751,7 @@
+@@ -1725,7 +1753,7 @@
m->mask_op = 0;
if (*l == '~') {
@@ -499,7 +501,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 +1760,7 @@
+@@ -1734,7 +1762,7 @@
m->str_range = 0;
m->str_flags = m->type == FILE_PSTRING ? PSTRING_1_LE : 0;
if ((op = get_op(*l)) != -1) {
@@ -508,7 +510,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
uint64_t val;
++l;
m->mask_op |= op;
-@@ -1925,11 +1951,6 @@
+@@ -1925,11 +1953,6 @@
if (check_format(ms, m) == -1)
return -1;
}
@@ -520,7 +522,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
m->mimetype[0] = '\0'; /* initialise MIME type to none */
return 0;
}
-@@ -2575,59 +2596,76 @@
+@@ -2575,59 +2598,76 @@
private struct magic_map *
apprentice_map(struct magic_set *ms, const char *fn)
{
@@ -618,7 +620,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 +2679,29 @@
+@@ -2641,17 +2681,29 @@
else
version = ptr[1];
if (version != VERSIONNO) {
@@ -656,7 +658,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
}
map->magic[0] = CAST(struct magic *, map->p) + 1;
nentries = 0;
-@@ -2664,22 +2714,29 @@
+@@ -2664,22 +2716,29 @@
map->magic[i + 1] = map->magic[i] + map->nmagic[i];
nentries += map->nmagic[i];
}
@@ -691,7 +693,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
return NULL;
}
-@@ -2700,14 +2757,19 @@
+@@ -2700,14 +2759,19 @@
char *dbname;
int rv = -1;
uint32_t i;
@@ -714,7 +716,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
file_error(ms, errno, "cannot open `%s'", dbname);
goto out;
}
-@@ -2717,31 +2779,33 @@
+@@ -2717,31 +2781,33 @@
goto out;
}
@@ -754,7 +756,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
return rv;
}
-@@ -2754,6 +2818,7 @@
+@@ -2754,6 +2820,7 @@
{
const char *p, *q;
char *buf;
@@ -762,7 +764,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
if (strip) {
if ((p = strrchr(fn, '/')) != NULL)
-@@ -2775,16 +2840,18 @@
+@@ -2775,16 +2842,18 @@
q++;
/* Compatibility with old code that looked in .mime */
if (ms->flags & MAGIC_MIME) {
@@ -787,7 +789,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 +2941,7 @@
+@@ -2874,7 +2943,7 @@
m->offset = swap4((uint32_t)m->offset);
m->in_offset = swap4((uint32_t)m->in_offset);
m->lineno = swap4((uint32_t)m->lineno);
@@ -1649,8 +1651,8 @@ 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 Fri Feb 28 14:01:53 2014
-@@ -41,79 +41,76 @@
++++ libmagic/funcs.c Wed Mar 19 13:28:34 2014
+@@ -41,79 +41,79 @@
#if defined(HAVE_WCTYPE_H)
#include <wctype.h>
#endif
@@ -1674,16 +1676,18 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c
-{
- int len;
- char *buf, *newstr;
-+#ifndef PREG_OFFSET_CAPTURE
-+# define PREG_OFFSET_CAPTURE (1<<8)
-+#endif
++#include "php.h"
++#include "main/php_network.h"
- if (ms->event_flags & EVENT_HAD_ERR)
- return 0;
- len = vasprintf(&buf, fmt, ap);
- if (len < 0)
- goto out;
--
++#ifndef PREG_OFFSET_CAPTURE
++# define PREG_OFFSET_CAPTURE (1<<8)
++#endif
+
- if (ms->o.buf != NULL) {
- len = asprintf(&newstr, "%s%s", ms->o.buf, buf);
- free(buf);
@@ -1767,7 +1771,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c
ms->event_flags |= EVENT_HAD_ERR;
ms->error = error;
}
-@@ -160,10 +157,9 @@
+@@ -160,10 +160,9 @@
file_error(ms, errno, "error reading");
}
@@ -1780,7 +1784,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c
{
int m = 0, rv = 0, looks_text = 0;
int mime = ms->flags & MAGIC_MIME;
-@@ -203,10 +199,10 @@
+@@ -203,10 +202,10 @@
}
}
#endif
@@ -1794,7 +1798,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 +217,17 @@
+@@ -221,12 +220,17 @@
}
/* Check if we have a CDF file */
@@ -1804,7 +1808,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c
- (void)fprintf(stderr, "cdf %d\n", m);
- goto done;
+ if ((ms->flags & MAGIC_NO_CHECK_CDF) == 0) {
-+ int fd;
++ php_socket_t fd;
+ TSRMLS_FETCH();
+ if (stream && SUCCESS == php_stream_cast(stream, PHP_STREAM_AS_FD, (void **)&fd, 0)) {
+ if ((m = file_trycdf(ms, fd, ubuf, nb)) != 0) {
@@ -1817,7 +1821,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c
/* try soft magic tests */
if ((ms->flags & MAGIC_NO_CHECK_SOFT) == 0)
-@@ -300,7 +301,6 @@
+@@ -300,7 +304,6 @@
return m;
}
@@ -1825,7 +1829,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c
protected int
file_reset(struct magic_set *ms)
-@@ -310,11 +310,11 @@
+@@ -310,11 +313,11 @@
return -1;
}
if (ms->o.buf) {
@@ -1839,7 +1843,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c
ms->o.pbuf = NULL;
}
ms->event_flags &= ~EVENT_HAD_ERR;
-@@ -333,7 +333,7 @@
+@@ -333,7 +336,7 @@
protected const char *
file_getbuffer(struct magic_set *ms)
{
@@ -1848,7 +1852,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c
size_t psize, len;
if (ms->event_flags & EVENT_HAD_ERR)
-@@ -348,15 +348,13 @@
+@@ -348,15 +351,13 @@
/* * 4 is for octal representation, + 1 is for NUL */
len = strlen(ms->o.buf);
if (len > (SIZE_MAX - 1) / 4) {
@@ -1865,7 +1869,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c
#if defined(HAVE_WCHAR_H) && defined(HAVE_MBRTOWC) && defined(HAVE_WCWIDTH)
{
-@@ -416,8 +414,8 @@
+@@ -416,8 +417,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) ?
@@ -1876,7 +1880,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c
if (ms->c.li == NULL) {
file_oomem(ms, len);
return -1;
-@@ -437,32 +435,50 @@
+@@ -437,32 +438,50 @@
return ms->o.buf == NULL ? 0 : strlen(ms->o.buf);
}