summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2018-04-30 14:29:55 +0200
committerAnatol Belski <ab@php.net>2018-04-30 14:29:55 +0200
commitdbea6e154d95e8aa4393dd517825a2da5de435f2 (patch)
tree4feb8291ecd5e24957ecdfef330497d8817ecc6c /ext
parent94699d2adee39dba2871aa1ed80bd76b35a2374e (diff)
downloadphp-git-dbea6e154d95e8aa4393dd517825a2da5de435f2.tar.gz
Update libmagic.patch
Diffstat (limited to 'ext')
-rw-r--r--ext/fileinfo/libmagic.patch217
1 files changed, 63 insertions, 154 deletions
diff --git a/ext/fileinfo/libmagic.patch b/ext/fileinfo/libmagic.patch
index d00b18e69d..43b77c23c3 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 2018-03-11 01:46:42.000000000 +0100
-+++ libmagic/apprentice.c 2018-04-27 19:30:48.686308139 +0200
++++ libmagic/apprentice.c 2018-04-30 13:51:02.699987375 +0200
@@ -2,7 +2,7 @@
* Copyright (c) Ian F. Darwin 1986-1995.
* Software written by Ian F. Darwin and others;
@@ -298,7 +298,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
return NULL;
}
mlist->next = mlist->prev = mlist;
-@@ -593,76 +564,45 @@
+@@ -593,60 +564,12 @@
for (ml = mlist->next; (next = ml->next) != NULL; ml = next) {
if (ml->map)
apprentice_unmap(CAST(struct magic_map *, ml->map));
@@ -360,10 +360,8 @@ 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)
- {
- char *p, *mfn;
-- int fileerr, errs = -1;
-+ int file_err, errs = -1;
+@@ -655,14 +578,31 @@
+ int fileerr, errs = -1;
size_t i;
- (void)file_reset(ms, 0);
@@ -405,14 +403,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
return -1;
}
}
-@@ -687,12 +627,12 @@
- *p++ = '\0';
- if (*fn == '\0')
- break;
-- fileerr = apprentice_1(ms, fn, action);
-- errs = MAX(errs, fileerr);
-+ file_err = apprentice_1(ms, fn, action);
-+ errs = MAX(errs, file_err);
+@@ -692,7 +632,7 @@
fn = p;
}
@@ -1264,7 +1255,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
switch (m->str_flags & PSTRING_LEN) {
diff -u libmagic.orig/apptype.c libmagic/apptype.c
--- libmagic.orig/apptype.c 2011-09-07 23:57:15.000000000 +0200
-+++ libmagic/apptype.c 2018-04-28 11:06:43.473101938 +0200
++++ libmagic/apptype.c 2018-04-30 11:42:56.817549017 +0200
@@ -1,15 +1,15 @@
/*
* Adapted from: apptype.c, Written by Eberhard Mattes and put into the
@@ -1299,7 +1290,7 @@ diff -u libmagic.orig/apptype.c libmagic/apptype.c
#include "file.h"
diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c
--- libmagic.orig/ascmagic.c 2017-11-02 21:25:39.000000000 +0100
-+++ libmagic/ascmagic.c 2018-04-28 11:05:05.397660689 +0200
++++ libmagic/ascmagic.c 2018-04-30 11:42:56.885548829 +0200
@@ -90,7 +90,7 @@
rv = file_ascmagic_with_encoding(ms, &bb,
ubuf, ulen, code, type, text);
@@ -1330,7 +1321,7 @@ diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c
}
diff -u libmagic.orig/buffer.c libmagic/buffer.c
--- libmagic.orig/buffer.c 2018-03-11 01:46:42.000000000 +0100
-+++ libmagic/buffer.c 2018-04-27 19:30:49.006293549 +0200
++++ libmagic/buffer.c 2018-04-30 11:42:56.953548641 +0200
@@ -31,7 +31,11 @@
#endif /* lint */
@@ -1381,7 +1372,7 @@ diff -u libmagic.orig/buffer.c libmagic/buffer.c
diff -u libmagic.orig/cdf.c libmagic/cdf.c
--- libmagic.orig/cdf.c 2018-03-11 01:46:42.000000000 +0100
-+++ libmagic/cdf.c 2018-04-28 09:02:14.865216158 +0200
++++ libmagic/cdf.c 2018-04-30 11:42:57.053548363 +0200
@@ -43,7 +43,17 @@
#include <err.h>
#endif
@@ -1639,22 +1630,22 @@ diff -u libmagic.orig/cdf.c libmagic/cdf.c
#endif
diff -u libmagic.orig/cdf.h libmagic/cdf.h
--- libmagic.orig/cdf.h 2017-03-09 17:57:17.000000000 +0100
-+++ libmagic/cdf.h 2018-04-27 19:30:49.234283137 +0200
-@@ -35,10 +35,12 @@
++++ libmagic/cdf.h 2018-04-30 11:43:04.761527016 +0200
+@@ -35,10 +35,10 @@
#ifndef _H_CDF_
#define _H_CDF_
-#ifdef WIN32
+#ifdef PHP_WIN32
#include <winsock2.h>
- #define timespec timeval
- #define tv_nsec tv_usec
+-#define timespec timeval
+-#define tv_nsec tv_usec
+#define asctime_r php_asctime_r
+#define ctime_r php_ctime_r
#endif
#ifdef __DJGPP__
#define timespec timeval
-@@ -272,7 +274,7 @@
+@@ -272,7 +272,7 @@
typedef struct {
uint16_t ce_namlen;
uint32_t ce_num;
@@ -1663,22 +1654,9 @@ diff -u libmagic.orig/cdf.h libmagic/cdf.h
uint16_t ce_name[256];
} cdf_catalog_entry_t;
-@@ -281,9 +283,9 @@
- cdf_catalog_entry_t cat_e[1];
- } cdf_catalog_t;
-
--struct timespec;
--int cdf_timestamp_to_timespec(struct timespec *, cdf_timestamp_t);
--int cdf_timespec_to_timestamp(cdf_timestamp_t *, const struct timespec *);
-+struct timeval;
-+int cdf_timestamp_to_timespec(struct timeval *, cdf_timestamp_t);
-+int cdf_timespec_to_timestamp(cdf_timestamp_t *, const struct timeval *);
- int cdf_read_header(const cdf_info_t *, cdf_header_t *);
- void cdf_swap_header(cdf_header_t *);
- void cdf_unpack_header(cdf_header_t *, char *);
diff -u libmagic.orig/cdf_time.c libmagic/cdf_time.c
--- libmagic.orig/cdf_time.c 2017-03-29 17:57:48.000000000 +0200
-+++ libmagic/cdf_time.c 2018-04-27 19:30:49.326278937 +0200
++++ libmagic/cdf_time.c 2018-04-30 11:42:57.117548186 +0200
@@ -56,7 +56,7 @@
for (y = CDF_BASE_YEAR; y < year; y++)
@@ -1697,57 +1675,9 @@ diff -u libmagic.orig/cdf_time.c libmagic/cdf_time.c
* Return the 0...11 month number.
*/
static int
-@@ -96,7 +96,7 @@
- }
-
- int
--cdf_timestamp_to_timespec(struct timespec *ts, cdf_timestamp_t t)
-+cdf_timestamp_to_timespec(struct timeval *ts, cdf_timestamp_t t)
- {
- struct tm tm;
- #ifdef HAVE_STRUCT_TM_TM_ZONE
-@@ -104,8 +104,9 @@
- #endif
- int rdays;
-
-- /* Unit is 100's of nanoseconds */
-- ts->tv_nsec = (t % CDF_TIME_PREC) * 100;
-+ /* XXX 5.14 at least introdced 100 ns intervals, this is to do */
-+ /* Time interval, in microseconds */
-+ ts->tv_usec = (t % CDF_TIME_PREC) * CDF_TIME_PREC;
-
- t /= CDF_TIME_PREC;
- tm.tm_sec = (int)(t % 60);
-@@ -144,7 +145,7 @@
-
- int
- /*ARGSUSED*/
--cdf_timespec_to_timestamp(cdf_timestamp_t *t, const struct timespec *ts)
-+cdf_timespec_to_timestamp(cdf_timestamp_t *t, const struct timeval *ts)
- {
- #ifndef __lint__
- (void)&t;
-@@ -156,7 +157,7 @@
- errno = EINVAL;
- return -1;
- }
-- *t = (ts->ts_nsec / 100) * CDF_TIME_PREC;
-+ *t = (ts->ts_usec / CDF_TIME_PREC) * CDF_TIME_PREC;
- *t = tm.tm_sec;
- *t += tm.tm_min * 60;
- *t += tm.tm_hour * 60 * 60;
-@@ -181,7 +182,7 @@
- int
- main(int argc, char *argv[])
- {
-- struct timespec ts;
-+ struct timeval ts;
- char buf[25];
- static const cdf_timestamp_t tst = 0x01A5E403C2D59C00ULL;
- static const char *ref = "Sat Apr 23 01:30:00 1977";
diff -u libmagic.orig/compress.c libmagic/compress.c
--- libmagic.orig/compress.c 2017-11-02 21:25:39.000000000 +0100
-+++ libmagic/compress.c 2018-04-28 11:18:14.190722374 +0200
++++ libmagic/compress.c 2018-04-30 11:42:57.189547987 +0200
@@ -2,7 +2,7 @@
* Copyright (c) Ian F. Darwin 1986-1995.
* Software written by Ian F. Darwin and others;
@@ -2048,7 +1978,7 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
+#endif /* if PHP_FILEINFO_UNCOMPRESS */
diff -u libmagic.orig/der.c libmagic/der.c
--- libmagic.orig/der.c 2017-02-10 19:14:01.000000000 +0100
-+++ libmagic/der.c 2018-04-27 19:30:49.682262679 +0200
++++ libmagic/der.c 2018-04-30 11:42:57.277547743 +0200
@@ -51,7 +51,9 @@
#include "magic.h"
#include "der.h"
@@ -2068,7 +1998,24 @@ diff -u libmagic.orig/der.c libmagic/der.c
strlcpy(buf, der__tag[tag], len);
else
snprintf(buf, len, "%#x", tag);
-@@ -343,7 +345,7 @@
+@@ -218,6 +220,7 @@
+ static int
+ der_data(char *buf, size_t blen, uint32_t tag, const void *q, uint32_t len)
+ {
++ uint32_t i = 0;
+ const uint8_t *d = CAST(const uint8_t *, q);
+ switch (tag) {
+ case DER_TAG_PRINTABLE_STRING:
+@@ -229,7 +232,7 @@
+ break;
+ }
+
+- for (uint32_t i = 0; i < len; i++) {
++ for (; i < len; i++) {
+ uint32_t z = i << 1;
+ if (z < blen - 2)
+ snprintf(buf + z, blen - z, "%.2x", d[i]);
+@@ -343,7 +346,7 @@
default:
break;
}
@@ -2077,7 +2024,7 @@ diff -u libmagic.orig/der.c libmagic/der.c
for (uint32_t i = 0; i < len; i++)
printf("%.2x", d[i]);
printf("\n");
-@@ -367,7 +369,7 @@
+@@ -367,7 +370,7 @@
if (p + x >= ep)
break;
uint32_t len = getlength(p, &x, ep - p + x);
@@ -2088,7 +2035,7 @@ diff -u libmagic.orig/der.c libmagic/der.c
der_tag(buf, sizeof(buf), tag), len);
diff -u libmagic.orig/elfclass.h libmagic/elfclass.h
--- libmagic.orig/elfclass.h 2014-12-17 00:18:40.000000000 +0100
-+++ libmagic/elfclass.h 2018-04-27 19:30:49.866254276 +0200
++++ libmagic/elfclass.h 2018-04-30 11:43:04.969526440 +0200
@@ -1,7 +1,7 @@
/*
* Copyright (c) Christos Zoulas 2008.
@@ -2136,7 +2083,7 @@ diff -u libmagic.orig/elfclass.h libmagic/elfclass.h
(int)elf_getu16(swap, elfhdr.e_shstrndx),
diff -u libmagic.orig/encoding.c libmagic/encoding.c
--- libmagic.orig/encoding.c 2017-11-02 21:25:39.000000000 +0100
-+++ libmagic/encoding.c 2018-04-28 11:08:01.380663120 +0200
++++ libmagic/encoding.c 2018-04-30 11:46:38.432940402 +0200
@@ -88,12 +88,12 @@
*code_mime = "binary";
@@ -2166,7 +2113,7 @@ diff -u libmagic.orig/encoding.c libmagic/encoding.c
}
diff -u libmagic.orig/file.h libmagic/file.h
--- libmagic.orig/file.h 2018-03-11 01:46:42.000000000 +0100
-+++ libmagic/file.h 2018-04-27 19:30:50.194239284 +0200
++++ libmagic/file.h 2018-04-30 11:43:05.041526241 +0200
@@ -27,21 +27,15 @@
*/
/*
@@ -2452,7 +2399,7 @@ diff -u libmagic.orig/file.h libmagic/file.h
#endif
diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c
--- libmagic.orig/fsmagic.c 2017-05-24 21:17:50.000000000 +0200
-+++ libmagic/fsmagic.c 2018-04-27 19:30:50.306234161 +0200
++++ libmagic/fsmagic.c 2018-04-30 11:42:57.433547312 +0200
@@ -2,7 +2,7 @@
* Copyright (c) Ian F. Darwin 1986-1995.
* Software written by Ian F. Darwin and others;
@@ -2824,7 +2771,7 @@ diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c
case S_IFSOCK:
diff -u libmagic.orig/funcs.c libmagic/funcs.c
--- libmagic.orig/funcs.c 2017-11-02 21:25:39.000000000 +0100
-+++ libmagic/funcs.c 2018-04-28 12:46:26.840103237 +0200
++++ libmagic/funcs.c 2018-04-30 13:51:02.523987958 +0200
@@ -31,7 +31,6 @@
#endif /* lint */
@@ -2881,14 +2828,14 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c
- fprintf(stderr, "vasprintf failed (%s)", strerror(errno));
- return -1;
-}
-+extern public void convert_libmagic_pattern(zval *pattern, char *val, int len, int options);
++extern public void convert_libmagic_pattern(zval *pattern, char *val, size_t len, uint32_t options);
protected int
file_printf(struct magic_set *ms, const char *fmt, ...)
{
- int rv;
va_list ap;
-+ int len;
++ size_t len;
+ char *buf = NULL, *newstr;
va_start(ap, fmt);
@@ -3086,7 +3033,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c
- }
- rv = nm;
+ zval patt;
-+ int opts = 0;
++ uint32_t opts = 0;
+ pcre_cache_entry *pce;
+ zend_string *res;
+ zend_string *repl;
@@ -3201,7 +3148,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 2018-04-27 19:30:50.918206168 +0200
++++ libmagic/magic.c 2018-04-30 11:42:57.673546646 +0200
@@ -25,11 +25,6 @@
* SUCH DAMAGE.
*/
@@ -3678,7 +3625,7 @@ diff -u libmagic.orig/magic.c libmagic/magic.c
magic_error(struct magic_set *ms)
diff -u libmagic.orig/magic.h libmagic/magic.h
--- libmagic.orig/magic.h 2018-04-23 20:45:58.824428361 +0200
-+++ libmagic/magic.h 2018-04-27 19:30:51.050200127 +0200
++++ libmagic/magic.h 2018-04-30 11:43:05.137525976 +0200
@@ -122,6 +122,7 @@
const char *magic_getpath(const char *, int);
@@ -3689,7 +3636,7 @@ diff -u libmagic.orig/magic.h libmagic/magic.h
diff -u libmagic.orig/print.c libmagic/print.c
--- libmagic.orig/print.c 2017-02-10 19:14:01.000000000 +0100
-+++ libmagic/print.c 2018-04-28 11:22:53.605682359 +0200
++++ libmagic/print.c 2018-04-30 11:42:57.733546480 +0200
@@ -2,7 +2,7 @@
* Copyright (c) Ian F. Darwin 1986-1995.
* Software written by Ian F. Darwin and others;
@@ -3738,7 +3685,7 @@ diff -u libmagic.orig/print.c libmagic/print.c
if (m->str_flags) {
(void) fputc('/', stderr);
if (m->str_flags & STRING_COMPACT_WHITESPACE)
-@@ -215,30 +222,30 @@
+@@ -215,26 +222,26 @@
file_magwarn(struct magic_set *ms, const char *f, ...)
{
va_list va;
@@ -3775,13 +3722,7 @@ diff -u libmagic.orig/print.c libmagic/print.c
+ struct tm *tm = NULL;
if (flags & FILE_T_WINDOWS) {
-- struct timespec ts;
-- cdf_timestamp_to_timespec(&ts, CAST(cdf_timestamp_t, v));
-+ struct timeval ts;
-+ cdf_timestamp_to_timespec(&ts, t);
- t = ts.tv_sec;
- } else {
- // XXX: perhaps detect and print something if overflow
+ struct timespec ts;
@@ -247,9 +254,29 @@
}
@@ -3816,7 +3757,7 @@ diff -u libmagic.orig/print.c libmagic/print.c
goto out;
diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
--- libmagic.orig/readcdf.c 2017-11-02 21:25:39.000000000 +0100
-+++ libmagic/readcdf.c 2018-04-28 08:59:06.029692824 +0200
++++ libmagic/readcdf.c 2018-04-30 11:42:57.805546280 +0200
@@ -31,7 +31,11 @@
#include <assert.h>
@@ -3829,18 +3770,7 @@ diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
#include <string.h>
#include <time.h>
#include <ctype.h>
-@@ -75,6 +79,10 @@
- { NULL, NULL, },
- };
-
-+#ifdef PHP_WIN32
-+# define strcasestr strstr
-+#endif
-+
- static const struct cv {
- uint64_t clsid[2];
- const char *mime;
-@@ -104,10 +112,6 @@
+@@ -104,10 +108,6 @@
if (clsid[0] == cv[i].clsid[0] && clsid[1] == cv[i].clsid[1])
return cv[i].mime;
}
@@ -3851,7 +3781,7 @@ diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
return NULL;
}
-@@ -116,30 +120,14 @@
+@@ -116,30 +116,14 @@
{
size_t i;
const char *rv = NULL;
@@ -3884,14 +3814,7 @@ diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
return rv;
}
-@@ -149,12 +137,14 @@
- {
- size_t i;
- cdf_timestamp_t tp;
-- struct timespec ts;
-+ struct timeval ts;
- char buf[64];
- const char *str = NULL;
+@@ -155,6 +139,8 @@
const char *s, *e;
int len;
@@ -3900,21 +3823,7 @@ diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
if (!NOTMIME(ms) && root_storage)
str = cdf_clsid_to_mime(root_storage->d_storage_uuid,
clsid2mime);
-@@ -234,8 +224,11 @@
- return -1;
- } else {
- char *c, *ec;
-- cdf_timestamp_to_timespec(&ts, tp);
-- c = cdf_ctime(&ts.tv_sec, tbuf);
-+ const time_t sec = ts.tv_sec;
-+ if (cdf_timestamp_to_timespec(&ts, tp) == -1) {
-+ return -1;
-+ }
-+ c = cdf_ctime(&sec, tbuf);
- if (c != NULL &&
- (ec = strchr(c, '\n')) != NULL)
- *ec = '\0';
-@@ -281,10 +274,10 @@
+@@ -281,10 +267,10 @@
if (file_printf(ms, "%s%s",
cdf_u16tos8(buf, ce[i].ce_namlen, ce[i].ce_name),
i == cat->cat_num - 1 ? "]" : ", ") == -1) {
@@ -3927,7 +3836,7 @@ diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
} else {
if (file_printf(ms, "application/CDFV2") == -1)
return -1;
-@@ -345,7 +338,7 @@
+@@ -345,7 +331,7 @@
}
m = cdf_file_property_info(ms, info, count, root_storage);
@@ -3936,7 +3845,7 @@ diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
return m == -1 ? -2 : m;
}
-@@ -353,11 +346,11 @@
+@@ -353,11 +339,11 @@
#ifdef notdef
private char *
format_clsid(char *buf, size_t len, const uint64_t uuid[2]) {
@@ -3950,7 +3859,7 @@ diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
(uuid[1] >> 48) & (uint64_t)0x0000000000000ffffULL,
(uuid[1] >> 0) & (uint64_t)0x0000fffffffffffffULL);
return buf;
-@@ -436,7 +429,7 @@
+@@ -436,7 +422,7 @@
const char *sections[5];
const int types[5];
} sectioninfo[] = {
@@ -3959,7 +3868,7 @@ diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
{
"EncryptedPackage", "EncryptedSummary",
NULL, NULL, NULL,
-@@ -448,7 +441,7 @@
+@@ -448,7 +434,7 @@
},
},
@@ -3968,7 +3877,7 @@ diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
{
#if 0
"TaxForms", "PDFTaxForms", "modulesInBackup",
-@@ -655,11 +648,11 @@
+@@ -655,11 +641,11 @@
cdf_zero_stream(&scn);
cdf_zero_stream(&sst);
out3:
@@ -3985,7 +3894,7 @@ diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
if (NOTMIME(ms)) {
diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
--- libmagic.orig/softmagic.c 2018-04-15 20:49:15.000000000 +0200
-+++ libmagic/softmagic.c 2018-04-27 19:30:51.678171356 +0200
++++ libmagic/softmagic.c 2018-04-30 13:51:02.611987667 +0200
@@ -43,6 +43,10 @@
#include <time.h>
#include "der.h"
@@ -4246,7 +4155,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
}
+public void
-+convert_libmagic_pattern(zval *pattern, char *val, int len, int options)
++convert_libmagic_pattern(zval *pattern, char *val, size_t len, uint32_t options)
+{
+ int i, j=0;
+ zend_string *t;
@@ -4291,7 +4200,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
- file_regex_t rx;
- const char *search;
+ zval pattern;
-+ int options = 0;
++ uint32_t options = 0;
+ pcre_cache_entry *pce;
- if (ms->search.s == NULL)
@@ -4415,7 +4324,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 2014-05-13 18:48:12.000000000 +0200
-+++ libmagic/strcasestr.c 2018-04-27 19:30:52.154149541 +0200
++++ libmagic/strcasestr.c 2018-04-30 11:42:57.969545825 +0200
@@ -39,6 +39,8 @@
#include "file.h"