diff options
author | Anatol Belski <ab@php.net> | 2014-05-27 22:38:02 +0200 |
---|---|---|
committer | Julien Pauli <jpauli@php.net> | 2014-05-28 10:03:24 +0200 |
commit | cddf2c5dcd5ee23bd175826889d25de52c97b119 (patch) | |
tree | c81196261acadc678ef64b038da9a8e129803eda | |
parent | 8a904ba8a5bd3b0c3feda1dfed6fd3b3072e5af6 (diff) | |
download | php-git-cddf2c5dcd5ee23bd175826889d25de52c97b119.tar.gz |
Merge branch 'PHP-5.4' into PHP-5.5
* PHP-5.4:
updated libmagic.patch for 5.4+
Conflicts:
ext/fileinfo/libmagic.patch
-rw-r--r-- | ext/fileinfo/libmagic.patch | 64 |
1 files changed, 60 insertions, 4 deletions
diff --git a/ext/fileinfo/libmagic.patch b/ext/fileinfo/libmagic.patch index d646762895..39807ac00b 100644 --- a/ext/fileinfo/libmagic.patch +++ b/ext/fileinfo/libmagic.patch @@ -872,7 +872,7 @@ diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c } diff -u libmagic.orig/cdf.c libmagic/cdf.c --- libmagic.orig/cdf.c Thu Mar 21 18:45:14 2013 -+++ libmagic/cdf.c Mon Dec 2 15:25:29 2013 ++++ libmagic/cdf.c Tue May 27 22:22:35 2014 @@ -43,7 +43,17 @@ #include <err.h> #endif @@ -903,7 +903,63 @@ diff -u libmagic.orig/cdf.c libmagic/cdf.c return -1; return (ssize_t)len; -@@ -1132,7 +1145,7 @@ +@@ -810,6 +823,10 @@ + i, inp[i].pi_id, inp[i].pi_type, q - p, offs)); + if (inp[i].pi_type & CDF_VECTOR) { + nelements = CDF_GETUINT32(q, 1); ++ if (nelements == 0) { ++ DPRINTF(("CDF_VECTOR with nelements == 0\n")); ++ goto out; ++ } + o = 2; + } else { + nelements = 1; +@@ -884,7 +901,9 @@ + } + DPRINTF(("nelements = %" SIZE_T_FORMAT "u\n", + nelements)); +- for (j = 0; j < nelements; j++, i++) { ++ for (j = 0; j < nelements && i < sh.sh_properties; ++ j++, i++) ++ { + uint32_t l = CDF_GETUINT32(q, o); + inp[i].pi_str.s_len = l; + inp[i].pi_str.s_buf = (const char *) +@@ -929,7 +948,7 @@ + cdf_unpack_summary_info(const cdf_stream_t *sst, const cdf_header_t *h, + cdf_summary_info_header_t *ssi, cdf_property_info_t **info, size_t *count) + { +- size_t i, maxcount; ++ size_t maxcount; + const cdf_summary_info_header_t *si = + CAST(const cdf_summary_info_header_t *, sst->sst_tab); + const cdf_section_declaration_t *sd = +@@ -944,21 +963,13 @@ + ssi->si_os = CDF_TOLE2(si->si_os); + ssi->si_class = si->si_class; + cdf_swap_class(&ssi->si_class); +- ssi->si_count = CDF_TOLE2(si->si_count); ++ ssi->si_count = CDF_TOLE4(si->si_count); + *count = 0; + maxcount = 0; + *info = NULL; +- for (i = 0; i < CDF_TOLE4(si->si_count); i++) { +- if (i >= CDF_LOOP_LIMIT) { +- DPRINTF(("Unpack summary info loop limit")); +- errno = EFTYPE; +- return -1; +- } +- if (cdf_read_property_info(sst, h, CDF_TOLE4(sd->sd_offset), +- info, count, &maxcount) == -1) { ++ if (cdf_read_property_info(sst, h, CDF_TOLE4(sd->sd_offset), info, ++ count, &maxcount) == -1) + return -1; +- } +- } + return 0; + } + +@@ -1132,7 +1143,7 @@ cdf_directory_t *d; char name[__arraycount(d->d_name)]; cdf_stream_t scn; @@ -912,7 +968,7 @@ diff -u libmagic.orig/cdf.c libmagic/cdf.c static const char *types[] = { "empty", "user storage", "user stream", "lockbytes", "property", "root storage" }; -@@ -1185,7 +1198,7 @@ +@@ -1185,7 +1196,7 @@ cdf_dump_property_info(const cdf_property_info_t *info, size_t count) { cdf_timestamp_t tp; @@ -921,7 +977,7 @@ diff -u libmagic.orig/cdf.c libmagic/cdf.c char buf[64]; size_t i, j; -@@ -1229,7 +1242,11 @@ +@@ -1229,7 +1240,11 @@ break; case CDF_FILETIME: tp = info[i].pi_tp; |