mirror of
https://github.com/bdnugget/php-src.git
synced 2026-11-08 01:37:30 +00:00
Compare commits
6
Commits
php-7.2.31
...
php-5.5.13
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c48169cc31 | ||
|
|
432c063b3e | ||
|
|
cddf2c5dcd | ||
|
|
8a904ba8a5 | ||
|
|
3ef354e4cf | ||
|
|
0c24fdb464 |
No files matched your search
@@ -1,6 +1,6 @@
|
||||
PHP NEWS
|
||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
?? ??? 2014, PHP 5.5.13
|
||||
29 May 2014, PHP 5.5.13
|
||||
|
||||
- CLI server:
|
||||
. Fixed bug #67079 (Missing MIME types for XML/XSL files). (Anatol)
|
||||
@@ -15,6 +15,7 @@ PHP NEWS
|
||||
. Fixed bug #67245 (usage of memcpy() with overlapping src and dst in
|
||||
zend_exceptions.c). (Bob)
|
||||
. Fixed bug #67247 (spl_fixedarray_resize integer overflow). (Stas)
|
||||
. Fixed bug #67249 (printf out-of-bounds read). (Stas)
|
||||
. Fixed bug #67250 (iptcparse out-of-bounds read). (Stas)
|
||||
. Fixed bug #67252 (convert_uudecode out-of-bounds read). (Stas)
|
||||
|
||||
@@ -32,6 +33,9 @@ PHP NEWS
|
||||
|
||||
- Fileinfo:
|
||||
. Fixed bug #66307 (Fileinfo crashes with powerpoint files). (Anatol)
|
||||
. Fixed bug #67327 (fileinfo: CDF infinite loop in nelements DoS) (CVE-2014-0238).
|
||||
. Fixed bug #67328 (fileinfo: fileinfo: numerous file_printf calls resulting in
|
||||
performance degradation) (CVE-2014-0237).
|
||||
|
||||
- FPM:
|
||||
. Fixed bug #66908 (php-fpm reload leaks epoll_create() file descriptor).
|
||||
|
||||
+1
-1
@@ -120,7 +120,7 @@ int zend_sprintf(char *buffer, const char *format, ...);
|
||||
PHP_MAJOR_VERSION=5
|
||||
PHP_MINOR_VERSION=5
|
||||
PHP_RELEASE_VERSION=13
|
||||
PHP_EXTRA_VERSION="-dev"
|
||||
PHP_EXTRA_VERSION=""
|
||||
PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
|
||||
PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
+11
-13
@@ -823,6 +823,10 @@ cdf_read_property_info(const cdf_stream_t *sst, const cdf_header_t *h,
|
||||
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;
|
||||
@@ -897,7 +901,9 @@ cdf_read_property_info(const cdf_stream_t *sst, const cdf_header_t *h,
|
||||
}
|
||||
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 *)
|
||||
@@ -942,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 =
|
||||
@@ -957,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;
|
||||
if (cdf_read_property_info(sst, h, CDF_TOLE4(sd->sd_offset), info,
|
||||
count, &maxcount) == -1)
|
||||
return -1;
|
||||
}
|
||||
if (cdf_read_property_info(sst, h, CDF_TOLE4(sd->sd_offset),
|
||||
info, count, &maxcount) == -1) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -376,6 +376,7 @@ php_formatted_print(int ht, int *len, int use_array, int format_offset TSRMLS_DC
|
||||
int alignment, currarg, adjusting, argnum, width, precision;
|
||||
char *format, *result, padding;
|
||||
int always_sign;
|
||||
int format_len;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "+", &args, &argc) == FAILURE) {
|
||||
return NULL;
|
||||
@@ -414,11 +415,12 @@ php_formatted_print(int ht, int *len, int use_array, int format_offset TSRMLS_DC
|
||||
|
||||
convert_to_string_ex(args[format_offset]);
|
||||
format = Z_STRVAL_PP(args[format_offset]);
|
||||
format_len = Z_STRLEN_PP(args[format_offset]);
|
||||
result = emalloc(size);
|
||||
|
||||
currarg = 1;
|
||||
|
||||
while (inpos<Z_STRLEN_PP(args[format_offset])) {
|
||||
while (inpos<format_len) {
|
||||
int expprec = 0, multiuse = 0;
|
||||
zval *tmp;
|
||||
|
||||
@@ -473,7 +475,7 @@ php_formatted_print(int ht, int *len, int use_array, int format_offset TSRMLS_DC
|
||||
/* space padding, the default */
|
||||
} else if (format[inpos] == '+') {
|
||||
always_sign = 1;
|
||||
} else if (format[inpos] == '\'') {
|
||||
} else if (format[inpos] == '\'' && inpos+1<format_len) {
|
||||
padding = format[++inpos];
|
||||
} else {
|
||||
PRINTF_DEBUG(("sprintf: end of modifiers\n"));
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
--TEST--
|
||||
Bug #67249 (printf out-of-bounds read)
|
||||
--FILE--
|
||||
<?php
|
||||
var_dump(sprintf("%'", "foo"));
|
||||
?>
|
||||
--EXPECT--
|
||||
string(0) ""
|
||||
+2
-2
@@ -3,6 +3,6 @@
|
||||
#define PHP_MAJOR_VERSION 5
|
||||
#define PHP_MINOR_VERSION 5
|
||||
#define PHP_RELEASE_VERSION 13
|
||||
#define PHP_EXTRA_VERSION "-dev"
|
||||
#define PHP_VERSION "5.5.13-dev"
|
||||
#define PHP_EXTRA_VERSION ""
|
||||
#define PHP_VERSION "5.5.13"
|
||||
#define PHP_VERSION_ID 50513
|
||||
Reference in new issue
Block a user