com php-src: Fix bug #67328 (fileinfo: numerous file_printf calls resulting in performance degradation): e xt/fileinfo/libmagic/cdf.c
| From: | Johannes Schlüter | Date: | Fri, 18 Jul 2014 22:52:00 +0000 |
| Subject: | com php-src: Fix bug #67328 (fileinfo: numerous file_printf calls resulting in performance degradation): e xt/fileinfo/libmagic/cdf.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-79627@lists.php.net to get a copy of this message | ||
Commit: ee1ab627639b2b6f8da00c687eb2386f93ec2ef6
Author: Stanislav Malyshev <stas@php.net> Mon, 26 May 2014 17:50:14 -0700
Parents: d77ea459bd33a5267475a809a86f30a1d89ef0c2
Branches: PHP-5.3
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=ee1ab627639b2b6f8da00c687eb2386f93ec2ef6
Log:
Fix bug #67328 (fileinfo: numerous file_printf calls resulting in performance degradation)
Upstream patch: https://github.com/file/file/commit/b8acc83781d5a24cc5101e525d15efe0482c280d
Bugs:
https://bugs.php.net/67328
Changed paths:
M ext/fileinfo/libmagic/cdf.c
Diff:
diff --git a/ext/fileinfo/libmagic/cdf.c b/ext/fileinfo/libmagic/cdf.c
index ffde3f4..ea67966 100644
--- a/ext/fileinfo/libmagic/cdf.c
+++ b/ext/fileinfo/libmagic/cdf.c
@@ -948,7 +948,7 @@ int
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 =
@@ -963,21 +963,13 @@ cdf_unpack_summary_info(const cdf_stream_t *sst, const cdf_header_t *h,
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;
}