You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.7 KiB
52 lines
1.7 KiB
From 68ce2d0ea6da79b12a365e375e1c2ce882c77480 Mon Sep 17 00:00:00 2001 |
|
From: Stanislav Malyshev <stas@php.net> |
|
Date: Mon, 26 May 2014 17:50:14 -0700 |
|
Subject: [PATCH] Fix bug #67328 (fileinfo: numerous file_printf calls |
|
resulting in performance degradation) |
|
|
|
Upstream patch: https://github.com/file/file/commit/b8acc83781d5a24cc5101e525d15efe0482c280d |
|
--- |
|
ext/fileinfo/libmagic/cdf.c | 16 ++++------------ |
|
1 file changed, 4 insertions(+), 12 deletions(-) |
|
|
|
diff --git a/ext/fileinfo/libmagic/cdf.c b/ext/fileinfo/libmagic/cdf.c |
|
index dd7177e..8dacd2f 100644 |
|
--- a/src/cdf.c |
|
+++ b/src/cdf.c |
|
@@ -929,7 +929,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 = |
|
@@ -944,21 +944,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; |
|
} |
|
|
|
-- |
|
1.9.2 |
|
|
|
|