Commit: da1483c2ff3923a15cd1e55ea3c794b5d7925fca
Author: Davey Shafik <m...@daveyshafik.com> Thu, 1 Dec 2016 18:54:46
-0800
Parents: f46910caa35d1519b0538a87ac2e77237f090de0
Branches: master
Link:
http://git.php.net/?p=web/php.git;a=commitdiff;h=da1483c2ff3923a15cd1e55ea3c794b5d7925fca
Log:
Update ChangeLog for 7.1.0
Changed paths:
M ChangeLog-7.php
diff --git a/ChangeLog-7.php b/ChangeLog-7.php
index 2a0b239..19a10dc 100644
--- a/ChangeLog-7.php
+++ b/ChangeLog-7.php
@@ -6,6 +6,575 @@ site_header("PHP 7 ChangeLog", array("current" => "docs",
"css" => array("change
?>
<h1>PHP 7 ChangeLog</h1>
+<section class="version" id="7.1.0"><!-- {{{ 7.1.0 -->
+<h3>Version 7.1.0</h3>
+<b><?php release_date('??-???-2016'); ?></b>
+<ul><li>Core:
+ <ul>
+ <li>Added nullable types.</li>
+ <li>Added DFA optimization framework based on e-SSA form.</li>
+ <li>Added specialized opcode handlers (e.g.
ZEND_ADD_LONG_NO_OVERFLOW).</li>
+ <li>Added [] = as alternative construct to list() =.</li>
+ <li>Added void return type.</li>
+ <li>Added support for negative string offsets in string offset syntax and
various string functions.</li>
+ <li>Added a form of the list() construct where keys can be specified.</li>
+ <li>Implemented safe execution timeout handling, that prevents random
crashes after "Maximum execution time exceeded" error.</li>
+ <li>Implemented the RFC `Support Class Constant Visibility`.</li>
+ <li>Implemented the RFC `Catching multiple exception types`.</li>
+ <li>Implemented logging to syslog with dynamic error levels.</li>
+ <li>Implemented FR <?php bugl(72614); ?> (Support "nmake test" on building
extensions by phpize).</li>
+ <li>Implemented RFC: Iterable.</li>
+ <li>Implemented RFC: Closure::fromCallable (Danack)</li>
+ <li>Implemented RFC: Replace "Missing argument" warning with
"\ArgumentCountError" exception.</li>
+ <li>Implemented RFC: Fix inconsistent behavior of $this variable.</li>
+ <li><?php bugfix(73585); ?> (Logging of "Internal Zend error - Missing
class information" missing class name).</li>
+ <li>Fixed memory leak(null coalescing operator with Spl hash).</li>
+ <li><?php bugfix(72736); ?> (Slow performance when fetching large dataset
with mysqli / PDO).</li>
+ <li><?php bugfix(72482); ?> (Ilegal write/read access caused by
gdImageAALine overflow).</li>
+ <li><?php bugfix(72696); ?> (imagefilltoborder stackoverflow on truecolor
images).</li>
+ <li><?php bugfix(73350); ?> (Exception::__toString() cause circular
references).</li>
+ <li><?php bugfix(73329); ?> ((Float)"Nano" == NAN).</li>
+ <li><?php bugfix(73288); ?> (Segfault in __clone > Exception.toString
> __get).</li>
+ <li>Fixed for #73240 (Write out of bounds at number_format).</li>
+ <li>Fix pthreads detection when cross-compiling (ffontaine)</li>
+ <li><?php bugfix(73337); ?> (try/catch not working with two exceptions
inside a same operation).</li>
+ <li><?php bugfix(73156); ?> (segfault on undefined function).</li>
+ <li><?php bugfix(73163); ?> (PHP hangs if error handler throws while
accessing undef const in default value).</li>
+ <li><?php bugfix(73172); ?> (parse error: Invalid numeric literal).</li>
+ <li><?php bugfix(73181); ?> (parse_str() without a second argument leads
to crash).</li>
+ <li><?php bugfix(73025); ?> (Heap Buffer Overflow in virtual_popen of
zend_virtual_cwd.c).</li>
+ <li><?php bugfix(73058); ?> (crypt broken when salt is 'too' long).</li>
+ <li><?php bugfix(72944); ?> (Null pointer deref in zval_delref_p).</li>
+ <li><?php bugfix(72943); ?> (assign_dim on string doesn't reset hval).</li>
+ <li><?php bugfix(72598); ?> (Reference is lost after array_slice())
(Nikita)</li>
+ <li><?php bugfix(72703); ?> (Out of bounds global memory read in BF_crypt
triggered by password_verify).</li>
+ <li><?php bugfix(72813); ?> (Segfault with __get returned by ref).</li>
+ <li><?php bugfix(72767); ?> (PHP Segfaults when trying to expand an
infinite operator).</li>
+ <li>TypeError messages for arg_info type checks will now say "must be ...
or null" where the parameter or return type accepts null.</li>
+ <li><?php bugfix(72857); ?> (stream_socket_recvfrom read access
violation).</li>
+ <li><?php bugfix(72663); ?> (Create an Unexpected Object and Don't Invoke
__wakeup() in Deserialization).</li>
+ <li><?php bugfix(72681); ?> (PHP Session Data Injection
Vulnerability).</li>
+ <li><?php bugfix(72742); ?> (memory allocator fails to realloc small block
to large one).</li>
+ <li>Fixed URL rewriter. It would not rewrite '//example.com/' URL
unconditionally. URL rewrite target hosts whitelist is implemented.</li>
+ <li><?php bugfix(72641); ?> (phpize (on Windows) ignores PHP_PREFIX).</li>
+ <li><?php bugfix(72683); ?> (getmxrr broken).</li>
+ <li><?php bugfix(72629); ?> (Caught exception assignment to variables
ignores references).</li>
+ <li><?php bugfix(72594); ?> (Calling an earlier instance of an included
anonymous class fatals).</li>
+ <li><?php bugfix(72581); ?> (previous property undefined in Exception
after deserialization).</li>
+ <li><?php bugfix(72543); ?> (Different references behavior comparing to
PHP 5) (Laruence, Dmitry, Nikita)</li>
+ <li><?php bugfix(72347); ?> (VERIFY_RETURN type casts visible in
finally).</li>
+ <li><?php bugfix(72216); ?> (Return by reference with finally is not
memory safe).</li>
+ <li><?php bugfix(72215); ?> (Wrong return value if var modified in
finally).</li>
+ <li><?php bugfix(71818); ?> (Memory leak when array altered in
destructor).</li>
+ <li><?php bugfix(71539); ?> (Memory error on $arr[$a] =& $arr[$b] if
RHS rehashes) (Dmitry, Nikita)</li>
+ <li>Added new constant PHP_FD_SETSIZE.</li>
+ <li>Added optind parameter to getopt().</li>
+ <li>Added PHP to SAPI error severity mapping for logs.</li>
+ <li><?php bugfix(71911); ?> (Unable to set --enable-debug on building
extensions by phpize on Windows).</li>
+ <li><?php bugfix(29368); ?> (The destructor is called when an exception is
thrown from the constructor).</li>
+ <li>Implemented RFC: RNG Fixes.</li>
+ <li>Implemented email validation as per RFC 6531.</li>
+ <li><?php bugfix(72513); ?> (Stack-based buffer overflow vulnerability in
virtual_file_ex).</li>
+ <li><?php bugfix(72573); ?> (HTTP_PROXY is improperly trusted by some PHP
libraries and applications).</li>
+ <li><?php bugfix(72523); ?> (dtrace issue with reflection (failed
test)).</li>
+ <li><?php bugfix(72508); ?> (strange references after recursive function
call and "switch" statement).</li>
+ <li><?php bugfix(72441); ?> (Segmentation fault: RFC list_keys).</li>
+ <li><?php bugfix(72395); ?> (list() regression).</li>
+ <li><?php bugfix(72373); ?> (TypeError after Generator function w/declared
return type finishes).</li>
+ <li><?php bugfix(69489); ?> (tempnam() should raise notice if falling back
to temp dir).</li>
+ <li>Fixed UTF-8 and long path support on Windows.</li>
+ <li><?php bugfix(53432); ?> (Assignment via string index access on an
empty string converts to array).</li>
+ <li><?php bugfix(62210); ?> (Exceptions can leak temporary variables).</li>
+ <li><?php bugfix(62814); ?> (It is possible to stiffen child class members
visibility).</li>
+ <li><?php bugfix(69989); ?> (Generators don't participate in cycle
GC).</li>
+ <li><?php bugfix(70228); ?> (Memleak if return in finally block).</li>
+ <li><?php bugfix(71266); ?> (Missing separation of properties HT in
foreach etc).</li>
+ <li><?php bugfix(71604); ?> (Aborted Generators continue after nested
finally).</li>
+ <li><?php bugfix(71572); ?> (String offset assignment from an empty string
inserts null byte).</li>
+ <li><?php bugfix(71897); ?> (ASCII 0x7F Delete control character permitted
in identifiers).</li>
+ <li><?php bugfix(72188); ?> (Nested try/finally blocks losing return
value).</li>
+ <li><?php bugfix(72213); ?> (Finally leaks on nested exceptions).</li>
+ <li><?php bugfix(47517); ?> (php-cgi.exe missing UAC manifest).</li>
+ <li>Change statement and fcall extension handlers to accept frame.</li>
+ <li>Number operators taking numeric strings now emit E_NOTICEs or
E_WARNINGs when given malformed numeric strings.</li>
+ <li>(int), intval() where $base is 10 or unspecified, settype(), decbin(),
decoct(), dechex(), integer operators and other conversions now always respect
scientific notation in numeric strings.</li>
+ <li>Raise a compile-time warning on octal escape sequence overflow.</li>
+ </ul></li>
+<li>Apache2handler:
+ <ul>
+ <li>Enable per-module logging in Apache 2.4+.</li>
+ </ul></li>
+<li>BCmath:
+ <ul>
+ <li>Fix bug #73190 (memcpy negative parameter _bc_new_num_ex).</li>
+ </ul></li>
+<li>Bz2:
+ <ul>
+ <li><?php bugfix(72837); ?> (integer overflow in bzdecompress caused heap
corruption).</li>
+ <li><?php bugfix(72613); ?> (Inadequate error handling in bzread()).</li>
+ </ul></li>
+<li>Calendar:
+ <ul>
+ <li>Fix integer overflows (Joshua Rogers)</li>
+ <li><?php bugfix(67976); ?> (cal_days_month() fails for final month of the
French calendar).</li>
+ <li><?php bugfix(71894); ?> (AddressSanitizer: global-buffer-overflow in
zif_cal_from_jd).</li>
+ </ul></li>
+<li>CLI Server:
+ <ul>
+ <li><?php bugfix(73360); ?> (Unable to work in root with unicode
chars).</li>
+ <li><?php bugfix(71276); ?> (Built-in webserver does not send Date
header).</li>
+ </ul></li>
+<li>COM:
+ <ul>
+ <li><?php bugfix(73126); ?> (Cannot pass parameter 1 by reference).</li>
+ <li><?php bugfix(69579); ?> (Invalid free in extension trait).</li>
+ <li><?php bugfix(72922); ?> (COM called from PHP does not return out
parameters).</li>
+ <li><?php bugfix(72569); ?> (DOTNET/COM array parameters broke in
PHP7).</li>
+ <li><?php bugfix(72498); ?> (variant_date_from_timestamp null
dereference).</li>
+ </ul></li>
+<li>Curl:
+ <ul>
+ <li>Implement support for handling HTTP/2 Server Push.</li>
+ <li>Add curl_multi_errno(), curl_share_errno() and curl_share_strerror()
functions.</li>
+ <li><?php bugfix(72674); ?> (Heap overflow in curl_escape).</li>
+ <li><?php bugfix(72541); ?> (size_t overflow lead to heap corruption).
(Stas).</li>
+ <li><?php bugfix(71709); ?> (curl_setopt segfault with empty
CURLOPT_HTTPHEADER).</li>
+ <li><?php bugfix(71929); ?> (CURLINFO_CERTINFO data parsing error).</li>
+ </ul></li>
+<li>Date:
+ <ul>
+ <li><?php bugfix(69587); ?> (DateInterval properties and isset).</li>
+ <li><?php bugfix(73426); ?> (createFromFormat with 'z' format char results
in incorrect time).</li>
+ <li><?php bugfix(45554); ?> (Inconsistent behavior of the u format
char).</li>
+ <li><?php bugfix(48225); ?> (DateTime parser doesn't set microseconds for
"now").</li>
+ <li><?php bugfix(52514); ?> (microseconds are missing in DateTime
class).</li>
+ <li><?php bugfix(52519); ?> (microseconds in DateInterval are
missing).</li>
+ <li><?php bugfix(60089); ?> (DateTime::createFromFormat() U after u nukes
microtime).</li>
+ <li><?php bugfix(64887); ?> (Allow DateTime modification with subsecond
items).</li>
+ <li><?php bugfix(68506); ?> (General DateTime improvments needed for
microseconds to become useful).</li>
+ <li><?php bugfix(73109); ?> (timelib_meridian doesn't parse dots
correctly).</li>
+ <li><?php bugfix(73247); ?> (DateTime constructor does not initialise
microseconds property).</li>
+ <li><?php bugfix(73147); ?> (Use After Free in PHP7 unserialize()).</li>
+ <li><?php bugfix(73189); ?> (Memcpy negative size parameter
php_resolve_path).</li>
+ <li><?php bugfix(66836); ?> (DateTime::createFromFormat 'U' with pre 1970
dates fails parsing).</li>
+ <li>Invalid serialization data for a DateTime or DatePeriod object will
now throw an instance of Error from __wakeup() or __set_state() instead of
resulting in a fatal error.</li>
+ <li>Timezone initialization failure from serialized data will now throw an
instance of Error from __wakeup() or __set_state() instead of resulting in a
fatal error.</li>
+ <li>Export date_get_interface_ce() for extension use.</li>
+ <li><?php bugfix(63740); ?> (strtotime seems to use both sunday and monday
as start of week).</li>
+ </ul></li>
+<li>Dba:
+ <ul>
+ <li><?php bugfix(70825); ?> (Cannot fetch multiple values with group in
ini file).</li>
+ <li>Data modification functions (e.g.: dba_insert()) now throw an instance
of Error instead of triggering a catchable fatal error if the key is does not
contain exactly two elements.</li>
+ </ul></li>
+<li>DOM:
+ <ul>
+ <li><?php bugfix(73150); ?> (missing NULL check in
dom_document_save_html).</li>
+ <li><?php bugfix(66502); ?> (DOM document dangling reference).</li>
+ <li>Invalid schema or RelaxNG validation contexts will throw an instance
of Error instead of resulting in a fatal error.</li>
+ <li>Attempting to register a node class that does not extend the
appropriate base class will now throw an instance of Error instead of resulting
in a fatal error.</li>
+ <li>Attempting to read an invalid or write to a readonly property will
throw an instance of Error instead of resulting in a fatal error.</li>
+ </ul></li>
+<li>DTrace:
+ <ul>
+ <li>Disabled PHP call tracing by default (it makes significant overhead).
This may be enabled again using envirionment variable USE_ZEND_DTRACE=1.</li>
+ </ul></li>
+<li>EXIF:
+ <ul>
+ <li><?php bugfix(72735); ?> (Samsung picture thumb not read (zero
size)).</li>
+ <li><?php bugfix(72627); ?> (Memory Leakage In
exif_process_IFD_in_TIFF).</li>
+ <li><?php bugfix(72603); ?> (Out of bound read in
exif_process_IFD_in_MAKERNOTE).</li>
+ <li><?php bugfix(72618); ?> (NULL Pointer Dereference in
exif_process_user_comment).</li>
+ </ul></li>
+<li>Filter:
+ <ul>
+ <li><?php bugfix(72972); ?> (Bad filter for the flags
FILTER_FLAG_NO_RES_RANGE and FILTER_FLAG_NO_PRIV_RANGE).</li>
+ <li><?php bugfix(73054); ?> (default option ignored when object passed to
int filter).</li>
+ <li><?php bugfix(71745); ?> (FILTER_FLAG_NO_RES_RANGE does not cover whole
127.0.0.0/8 range).</li>
+ </ul></li>
+<li>FPM:
+ <ul>
+ <li><?php bugfix(72575); ?> (using --allow-to-run-as-root should ignore
missing user).</li>
+ </ul></li>
+<li>FTP:
+ <ul>
+ <li><?php bugfix(70195); ?> (Cannot upload file using ftp_put to FTPES
with require_ssl_reuse).</li>
+ <li>Implemented FR <?php bugl(55651); ?> (Option to ignore the returned
FTP PASV address).</li>
+ </ul></li>
+<li>GD:
+ <ul>
+ <li><?php bugfix(73213); ?> (Integer overflow in imageline() with
antialiasing).</li>
+ <li><?php bugfix(73272); ?> (imagescale() is not affected by, but affects
imagesetinterpolation()).</li>
+ <li><?php bugfix(73279); ?> (Integer overflow in
gdImageScaleBilinearPalette()).</li>
+ <li><?php bugfix(73280); ?> (Stack Buffer Overflow in GD
dynamicGetbuf).</li>
+ <li><?php bugfix(50194); ?> (imagettftext broken on transparent background
w/o alphablending).</li>
+ <li><?php bugfix(73003); ?> (Integer Overflow in gdImageWebpCtx of
gd_webp.c).</li>
+ <li><?php bugfix(53504); ?> (imagettfbbox gives incorrect values for
bounding box).</li>
+ <li><?php bugfix(73157); ?> (imagegd2() ignores 3rd param if 4 are
given).</li>
+ <li><?php bugfix(73155); ?> (imagegd2() writes wrong chunk sizes on
boundaries).</li>
+ <li><?php bugfix(73159); ?> (imagegd2(): unrecognized formats may result
in corrupted files).</li>
+ <li><?php bugfix(73161); ?> (imagecreatefromgd2() may leak memory).</li>
+ <li><?php bugfix(67325); ?> (imagetruecolortopalette: white is duplicated
in palette).</li>
+ <li><?php bugfix(66005); ?> (imagecopy does not support 1bit transparency
on truecolor images).</li>
+ <li><?php bugfix(72913); ?> (imagecopy() loses single-color transparency
on palette images).</li>
+ <li><?php bugfix(68716); ?> (possible resource leaks in
_php_image_convert()).</li>
+ <li><?php bugfix(72709); ?> (imagesetstyle() causes OOB read for empty
$styles).</li>
+ <li><?php bugfix(72697); ?> (select_colors write out-of-bounds).</li>
+ <li><?php bugfix(72730); ?> (imagegammacorrect allows arbitrary write
access).</li>
+ <li><?php bugfix(72596); ?> (imagetypes function won't advertise WEBP
support).</li>
+ <li><?php bugfix(72604); ?> (imagearc() ignores thickness for full
arcs).</li>
+ <li><?php bugfix(70315); ?> (500 Server Error but page is fully
rendered).</li>
+ <li><?php bugfix(43828); ?> (broken transparency of imagearc for truecolor
in blendingmode).</li>
+ <li><?php bugfix(72512); ?> (gdImageTrueColorToPaletteBody allows
arbitrary write/read access).</li>
+ <li><?php bugfix(72519); ?> (imagegif/output out-of-bounds access).</li>
+ <li><?php bugfix(72558); ?> (Integer overflow error within
_gdContributionsAlloc()).</li>
+ <li><?php bugfix(72482); ?> (Ilegal write/read access caused by
gdImageAALine overflow).</li>
+ <li><?php bugfix(72494); ?> (imagecropauto out-of-bounds access).</li>
+ <li><?php bugfix(72404); ?> (imagecreatefromjpeg fails on selfie).</li>
+ <li><?php bugfix(43475); ?> (Thick styled lines have scrambled
patterns).</li>
+ <li><?php bugfix(53640); ?> (XBM images require width to be multiple of
8).</li>
+ <li><?php bugfix(64641); ?> (imagefilledpolygon doesn't draw horizontal
line).</li>
+ </ul></li>
+<li>Hash:
+ <ul>
+ <li>Added SHA3 fixed mode algorithms (224, 256, 384, and 512 bit).</li>
+ <li>Added SHA512/256 and SHA512/224 algorithms.</li>
+ </ul></li>
+<li>iconv:
+ <ul>
+ <li><?php bugfix(72320); ?> (iconv_substr returns false for empty
strings).</li>
+ </ul></li>
+<li>IMAP:
+ <ul>
+ <li><?php bugfix(73418); ?> (Integer Overflow in "_php_imap_mail" leads to
crash).</li>
+ <li>An email address longer than 16385 bytes will throw an instance of
Error instead of resulting in a fatal error.</li>
+ </ul></li>
+<li>Interbase:
+ <ul>
+ <li><?php bugfix(73512); ?> (Fails to find firebird headers as don't use
fb_config output).</li>
+ </ul></li>
+<li>Intl:
+ <ul>
+ <li><?php bugfix(73007); ?> (add locale length check).</li>
+ <li><?php bugfix(73218); ?> (add mitigation for ICU int overflow).</li>
+ <li><?php bugfix(65732); ?> (grapheme_*() is not Unicode compliant on CR
LF sequence).</li>
+ <li><?php bugfix(73007); ?> (add locale length check).</li>
+ <li><?php bugfix(72639); ?> (Segfault when instantiating class that
extends IntlCalendar and adds a property).</li>
+ <li><?php bugfix(72658); ?> (Locale::lookup() / locale_lookup() hangs if
no match found).</li>
+ <li>Partially fixed #72506 (idn_to_ascii for UTS #46 incorrect for long
domain names).</li>
+ <li><?php bugfix(72533); ?> (locale_accept_from_http out-of-bounds
access).</li>
+ <li>Failure to call the parent constructor in a class extending Collator
before invoking the parent methods will throw an instance of Error instead of
resulting in a recoverable fatal error.</li>
+ <li>Cloning a Transliterator object may will now throw an instance of
Error instead of resulting in a fatal error if cloning the internal
transliterator fails.</li>
+ <li>Added IntlTimeZone::getWindowsID() and
IntlTimeZone::getIDForWindowsID().</li>
+ <li><?php bugfix(69374); ?> (IntlDateFormatter formatObject returns wrong
utf8 value).</li>
+ <li><?php bugfix(69398); ?> (IntlDateFormatter formatObject returns wrong
value when time style is NONE).</li>
+ </ul></li>
+<li>JSON:
+ <ul>
+ <li>Introduced encoder struct instead of global which fixes bugs #66025
and #73254 related to pretty print indentation.</li>
+ <li><?php bugfix(73113); ?> (Segfault with throwing JsonSerializable).</li>
+ <li>Implemented earlier return when json_encode fails, fixes bugs #68992
(Stacking exceptions thrown by JsonSerializable) and #70275 (On recursion
error, json_encode can eat up all system memory).</li>
+ <li>Implemented FR <?php bugl(46600); ?> ("_empty_" key in objects).</li>
+ <li>Exported JSON parser API including json_parser_method that can be used
for implementing custom logic when parsing JSON.</li>
+ <li>Escaped U+2028 and U+2029 when JSON_UNESCAPED_UNICODE is supplied as
json_encode options and added JSON_UNESCAPED_LINE_TERMINATORS to restore the
previous behaviour.</li>
+ </ul></li>
+<li>LDAP:
+ <ul>
+ <li>Providing an unknown modification type to ldap_batch_modify() will now
throw an instance of Error instead of resulting in a fatal error.</li>
+ </ul></li>
+<li>Mbstring:
+ <ul>
+ <li><?php bugfix(73532); ?> (Null pointer dereference in mb_eregi).</li>
+ <li><?php bugfix(66964); ?> (mb_convert_variables() cannot detect
recursion) (Yasuo)</li>
+ <li><?php bugfix(72992); ?> (mbstring.internal_encoding doesn't inherit
default_charset).</li>
+ <li><?php bugfix(66797); ?> (mb_substr only takes 32-bit signed
integer).</li>
+ <li><?php bugfix(72711); ?> (`mb_ereg` does not clear the `$regs`
parameter on failure).</li>
+ <li><?php bugfix(72691); ?> (mb_ereg_search raises a warning if a match
zero-width).</li>
+ <li><?php bugfix(72693); ?> (mb_ereg_search increments search position
when a match zero-width).</li>
+ <li><?php bugfix(72694); ?> (mb_ereg_search_setpos does not accept a
string's last position).</li>
+ <li><?php bugfix(72710); ?> (`mb_ereg` causes buffer overflow on regexp
compile error).</li>
+ <li>Deprecated mb_ereg_replace() eval option.</li>
+ <li><?php bugfix(69151); ?> (mb_ereg should reject ill-formed byte
sequence).</li>
+ <li><?php bugfix(72405); ?> (mb_ereg_replace - mbc_to_code (oniguruma) -
oob read access).</li>
+ <li><?php bugfix(72399); ?> (Use-After-Free in MBString (search_re)).</li>
+ <li>mb_ereg() and mb_eregi() will now throw an instance of ParseError if
an invalid PHP expression is provided and the 'e' option is used.</li>
+ </ul></li>
+<li>Mcrypt:
+ <ul>
+ <li>Deprecated ext/mcrypt.</li>
+ <li><?php bugfix(72782); ?> (Heap Overflow due to integer overflows).</li>
+ <li><?php bugfix(72551); ?>, bug #72552 (In correct casting from size_t to
int lead to heap overflow in mdecrypt_generic).</li>
+ <li>mcrypt_encrypt() and mcrypt_decrypt() will throw an instance of Error
instead of resulting in a fatal error if mcrypt cannot be initialized.</li>
+ </ul></li>
+<li>Mysqli:
+ <ul>
+ <li>Attempting to read an invalid or write to a readonly property will
throw an instance of Error instead of resulting in a fatal error.</li>
+ </ul></li>
+<li>Mysqlnd:
+ <ul>
+ <li><?php bugfix(64526); ?> (Add missing mysqlnd.* parameters to
php.ini-*).</li>
+ <li><?php bugfix(71863); ?> (Segfault when EXPLAIN with "Unknown column"
error when using MariaDB).</li>
+ <li><?php bugfix(72701); ?> (mysqli_get_host_info() wrong output).</li>
+ </ul></li>
+<li>OCI8:
+ <ul>
+ <li><?php bugfix(71148); ?> (Bind reference overwritten on PHP 7).</li>
+ <li>Fixed invalid handle error with Implicit Result Sets.</li>
+ <li><?php bugfix(72524); ?> (Binding null values triggers ORA-24816
error).</li>
+ </ul></li>
+<li>ODBC:
+ <ul>
+ <li><?php bugfix(73448); ?> (odbc_errormsg returns trash, always 513
bytes).</li>
+ </ul></li>
+<li>Opcache:
+ <ul>
+ <li><?php bugfix(73583); ?> (Segfaults when conditionally declared class
and function have the same name).</li>
+ <li><?php bugfix(69090); ?> (check cached files permissions)</li>
+ <li><?php bugfix(72982); ?> (Memory leak in
zend_accel_blacklist_update_regexp() function).</li>
+ <li><?php bugfix(72949); ?> (Typo in opcache error message).</li>
+ <li><?php bugfix(72762); ?> (Infinite loop while parsing a file with
opcache enabled).</li>
+ <li><?php bugfix(72590); ?> (Opcache restart with kill_all_lockers does
not work).</li>
+ </ul></li>
+<li>OpenSSL:
+ <ul>
+ <li><?php bugfix(73478); ?> (openssl_pkey_new() generates wrong pub/priv
keys with Diffie Hellman).</li>
+ <li><?php bugfix(73276); ?> (crash in openssl_random_pseudo_bytes
function).</li>
+ <li><?php bugfix(73072); ?> (Invalid path SNI_server_certs causes
segfault).</li>
+ <li><?php bugfix(72360); ?> (ext/openssl build failure with OpenSSL
1.1.0).</li>
+ <li>Bumped a minimal version to 1.0.1.</li>
+ <li>Dropped support for SSL2.</li>
+ <li>Implemented FR <?php bugl(61204); ?> (Add elliptic curve support for
OpenSSL).</li>
+ <li>Implemented FR <?php bugl(67304); ?> (Added AEAD support [CCM and GCM
modes] to openssl_encrypt and openssl_decrypt).</li>
+ <li>Implemented error storing to the global queue and cleaning up the
OpenSSL error queue (resolves bugs #68276 and #69882).</li>
+ </ul></li>
+<li>Pcntl:
+ <ul>
+ <li>Implemented asynchronous signal handling without TICKS.</li>
+ <li>Added pcntl_signal_get_handler() that returns the current signal
handler for a particular signal. Addresses FR <?php bugl(72409); ?>.</li>
+ <li>Add signinfo to pcntl_signal() handler args (Bishop Bettini, David
Walker)</li>
+ </ul></li>
+<li>PCRE:
+ <ul>
+ <li><?php bugfix(73483); ?> (Segmentation fault on
pcre_replace_callback).</li>
+ <li><?php bugfix(73612); ?> (preg_*() may leak memory).</li>
+ <li><?php bugfix(73392); ?> (A use-after-free in zend allocator
management).</li>
+ <li><?php bugfix(73121); ?> (Bundled PCRE doesn't compile because JIT
isn't supported on s390).</li>
+ <li><?php bugfix(72688); ?> (preg_match missing group names in
matches).</li>
+ <li>Downgraded to PCRE 8.38.</li>
+ <li><?php bugfix(72476); ?> (Memleak in jit_stack).</li>
+ <li><?php bugfix(72463); ?> (mail fails with invalid argument).</li>
+ <li>Upgraded to PCRE 8.39.</li>
+ </ul></li>
+<li>PDO:
+ <ul>
+ <li><?php bugfix(72788); ?> (Invalid memory access when using persistent
PDO connection).</li>
+ <li><?php bugfix(72791); ?> (Memory leak in PDO persistent connection
handling).</li>
+ <li><?php bugfix(60665); ?> (call to empty() on NULL result using
PDO::FETCH_LAZY returns false).</li>
+ </ul></li>
+<li>PDO_DBlib:
+ <ul>
+ <li><?php bugfix(72414); ?> (Never quote values as raw binary data).</li>
+ <li>Allow \PDO::setAttribute() to set query timeouts.</li>
+ <li>Handle SQLDECIMAL/SQLNUMERIC types, which are used by later TDS
versions.</li>
+ <li>Add common PDO test suite.</li>
+ <li>Free error and message strings when cleaning up PDO instances.</li>
+ <li><?php bugfix(67130); ?> (\PDOStatement::nextRowset() should succeed
when all rows in current rowset haven't been fetched).</li>
+ <li>Ignore potentially misleading dberr values.</li>
+ <li>Implemented stringify 'uniqueidentifier' fields.</li>
+ </ul></li>
+<li>PDO_Firebird:
+ <ul>
+ <li><?php bugfix(73087); ?>, #61183, #71494 (Memory corruption in
bindParam).</li>
+ <li><?php bugfix(60052); ?> (Integer returned as a 64bit integer on
X86_64).</li>
+ </ul></li>
+<li>PDO_pgsql:
+ <ul>
+ <li><?php bugfix(70313); ?> (PDO statement fails to throw exception).</li>
+ <li><?php bugfix(72570); ?> (Segmentation fault when binding parameters on
a query without placeholders).</li>
+ <li>Implemented FR <?php bugl(72633); ?> (Postgres PDO lastInsertId()
should work without specifying a sequence).</li>
+ </ul></li>
+<li>Phar:
+ <ul>
+ <li><?php bugfix(72928); ?> (Out of bound when verify signature of zip
phar in phar_parse_zipfile).</li>
+ <li><?php bugfix(73035); ?> (Out of bound when verify signature of tar
phar in phar_parse_tarfile).</li>
+ </ul></li>
+<li>phpdbg:
+ <ul>
+ <li>Added generator command for inspection of currently alive
generators.</li>
+ </ul></li>
+<li>Postgres:
+ <ul>
+ <li><?php bugfix(73498); ?> (Incorrect SQL generated for
pg_copy_to()).</li>
+ <li>Implemented FR <?php bugl(31021); ?> (pg_last_notice() is needed to
get all notice messages).</li>
+ <li>Implemented FR <?php bugl(48532); ?> (Allow pg_fetch_all() to index
numerically).</li>
+ </ul></li>
+<li>Readline:
+ <ul>
+ <li><?php bugfix(72538); ?> (readline_redisplay crashes php).</li>
+ </ul></li>
+<li>Reflection:
+ <ul>
+ <li>Undo backwards compatiblity break in ReflectionType->__toString()
and deprecate via documentation instead.</li>
+ <li>Reverted prepending \ for class names.</li>
+ <li>Implemented request #38992 (invoke() and invokeArgs() static method
calls should match). (cmb).</li>
+ <li>Add ReflectionNamedType::getName(). This method should be used instead
of ReflectionType::__toString()</li>
+ <li>Prepend \ for class names and ? for nullable types returned from
ReflectionType::__toString().</li>
+ <li><?php bugfix(72661); ?> (ReflectionType::__toString crashes with
iterable).</li>
+ <li><?php bugfix(72222); ?> (ReflectionClass::export doesn't handle array
constants).</li>
+ <li>Failure to retrieve a reflection object or retrieve an object property
will now throw an instance of Error instead of resulting in a fatal error.</li>
+ <li>Fix #72209 (ReflectionProperty::getValue() doesn't fail if object
doesn't match type).</li>
+ </ul></li>
+<li>Session:
+ <ul>
+ <li><?php bugfix(73273); ?> (session_unset() empties values from all
variables in which is $_session stored).</li>
+ <li><?php bugfix(73100); ?> (session_destroy null dereference in
ps_files_path_create).</li>
+ <li><?php bugfix(68015); ?> (Session does not report invalid uid for files
save handler).</li>
+ <li><?php bugfix(72940); ?> (SID always return "name=ID", even if session
cookie exist).</li>
+ <li>Implemented session_gc() (Yasuo)
https://wiki.php.net/rfc/session-create-id</li>
+ <li>Implemented session_create_id() (Yasuo)
https://wiki.php.net/rfc/session-gc</li>
+ <li>Implemented RFC: Session ID without hashing. (Yasuo)
https://wiki.php.net/rfc/session-id-without-hashing</li>
+ <li><?php bugfix(72531); ?> (ps_files_cleanup_dir Buffer overflow).</li>
+ <li>Custom session handlers that do not return strings for session IDs
will now throw an instance of Error instead of resulting in a fatal error when
a function is called that must generate a session ID.</li>
+ <li>An invalid setting for session.hash_function will throw an instance of
Error instead of resulting in a fatal error when a session ID is created.</li>
+ <li><?php bugfix(72562); ?> (Use After Free in unserialize() with
Unexpected Session Deserialization).</li>
+ <li>Improved fix for bug #68063 (Empty session IDs do still start
sessions).</li>
+ <li><?php bugfix(71038); ?> (session_start() returns TRUE on failure).
Session save handlers must return 'string' always for successful read. i.e.
Non-existing session read must return empty string. PHP 7.0 is made not to
tolerate buggy return value.</li>
+ <li><?php bugfix(71394); ?> (session_regenerate_id() must close opened
session on errors).</li>
+ </ul></li>
+<li>SimpleXML:
+ <ul>
+ <li><?php bugfix(73293); ?> (NULL pointer dereference in
SimpleXMLElement::asXML()).</li>
+ <li><?php bugfix(72971); ?> (SimpleXML isset/unset do not respect
namespace).</li>
+ <li><?php bugfix(72957); ?> (Null coalescing operator doesn't behave as
expected with SimpleXMLElement).</li>
+ <li><?php bugfix(72588); ?> (Using global var doesn't work while accessing
SimpleXML element).</li>
+ <li>Creating an unnamed or duplicate attribute will throw an instance of
Error instead of resulting in a fatal error.</li>
+ </ul></li>
+<li>SNMP:
+ <ul>
+ <li><?php bugfix(72708); ?> (php_snmp_parse_oid integer overflow in memory
allocation).</li>
+ <li><?php bugfix(72479); ?> (Use After Free Vulnerability in SNMP with GC
and unserialize()).</li>
+ </ul></li>
+<li>Soap:
+ <ul>
+ <li><?php bugfix(73538); ?> (SoapClient::__setSoapHeaders doesn't
overwrite SOAP headers).</li>
+ <li><?php bugfix(73452); ?> (Segfault (Regression for #69152)).</li>
+ <li><?php bugfix(73037); ?> (SoapServer reports Bad Request when
gzipped).</li>
+ <li><?php bugfix(73237); ?> (Nested object in "any" element overwrites
other fields).</li>
+ <li><?php bugfix(69137); ?> (Peer verification fails when using a proxy
with SoapClient) (Keith Smiley)</li>
+ <li><?php bugfix(71711); ?> (Soap Server Member variables reference
bug).</li>
+ <li><?php bugfix(71996); ?> (Using references in arrays doesn't work like
expected).</li>
+ </ul></li>
+<li>SPL:
+ <ul>
+ <li><?php bugfix(73423); ?> (Reproducible crash with GDB backtrace).</li>
+ <li><?php bugfix(72888); ?> (Segfault on clone on splFileObject).</li>
+ <li><?php bugfix(73029); ?> (Missing type check when unserializing
SplArray).</li>
+ <li><?php bugfix(72646); ?> (SplFileObject::getCsvControl does not return
the escape character).</li>
+ <li><?php bugfix(72684); ?> (AppendIterator segfault with closed
generator).</li>
+ <li>Attempting to clone an SplDirectory object will throw an instance of
Error instead of resulting in a fatal error.</li>
+ <li>Calling ArrayIterator::append() when iterating over an object will
throw an instance of Error instead of resulting in a fatal error.</li>
+ <li><?php bugfix(55701); ?> (GlobIterator throws LogicException).</li>
+ </ul></li>
+<li>SQLite3:
+ <ul>
+ <li>Update to SQLite 3.15.1.</li>
+ <li><?php bugfix(73530); ?> (Unsetting result set may reset other result
set).</li>
+ <li><?php bugfix(73333); ?> (2147483647 is fetched as string).</li>
+ <li><?php bugfix(72668); ?> (Spurious warning when exception is thrown in
user defined function).</li>
+ <li>Implemented FR <?php bugl(72653); ?> (SQLite should allow opening with
empty filename).</li>
+ <li><?php bugfix(70628); ?> (Clearing bindings on an SQLite3 statement
doesn't work).</li>
+ <li>Implemented FR <?php bugl(71159); ?> (Upgraded bundled SQLite lib to
3.9.2).</li>
+ </ul></li>
+<li>Standard:
+ <ul>
+ <li><?php bugfix(73297); ?> (HTTP stream wrapper should ignore HTTP 100
Continue).</li>
+ <li><?php bugfix(73303); ?> (Scope not inherited by eval in assert()).</li>
+ <li><?php bugfix(73192); ?> (parse_url return wrong hostname).</li>
+ <li><?php bugfix(73203); ?> (passing additional_parameters causes mail to
fail).</li>
+ <li><?php bugfix(73203); ?> (passing additional_parameters causes mail to
fail).</li>
+ <li><?php bugfix(72920); ?> (Accessing a private constant using constant()
creates an exception AND warning).</li>
+ <li><?php bugfix(65550); ?> (get_browser() incorrectly parses entries with
"+" sign).</li>
+ <li><?php bugfix(71882); ?> (Negative ftruncate() on php://memory exhausts
memory).</li>
+ <li><?php bugfix(55451); ?> (substr_compare NULL length interpreted as
0).</li>
+ <li><?php bugfix(72278); ?> (getimagesize returning FALSE on valid
jpg).</li>
+ <li><?php bugfix(61967); ?> (unset array item in array_walk_recursive
cause inconsistent array).</li>
+ <li><?php bugfix(62607); ?> (array_walk_recursive move internal
pointer).</li>
+ <li><?php bugfix(69068); ?> (Exchanging array during array_walk ->
memory errors).</li>
+ <li><?php bugfix(70713); ?> (Use After Free Vulnerability in array_walk()/
array_walk_recursive()).</li>
+ <li><?php bugfix(72622); ?> (array_walk + array_replace_recursive create
references from nothing).</li>
+ <li><?php bugfix(72330); ?> (CSV fields incorrectly split if escape char
followed by UTF chars).</li>
+ <li>Implemented RFC: More precise float values.</li>
+ <li>array_multisort now uses zend_sort instead zend_qsort.</li>
+ <li><?php bugfix(72505); ?> (readfile() mangles files larger than 2G).</li>
+ <li>assert() will throw a ParseError when evaluating a string given as the
first argument if the PHP code is invalid instead of resulting in a catchable
fatal error.</li>
+ <li>Calling forward_static_call() outside of a class scope will now throw
an instance of Error instead of resulting in a fatal error.</li>
+ <li>Added is_iterable() function.</li>
+ <li><?php bugfix(72306); ?> (Heap overflow through proc_open and $env
parameter).</li>
+ <li><?php bugfix(71100); ?> (long2ip() doesn't accept integers in strict
mode).</li>
+ <li>Implemented FR <?php bugl(55716); ?> (Add an option to pass a custom
stream context to get_headers()).</li>
+ <li>Additional validation for parse_url() for login/pass components).</li>
+ <li>Implemented FR <?php bugl(69359); ?> (Provide a way to fetch the
current environment variables).</li>
+ <li>unpack() function accepts an additional optional argument $offset.</li>
+ <li>Implemented #51879 stream context socket option tcp_nodelay (Joe)</li>
+ </ul></li>
+<li>Streams:
+ <ul>
+ <li><?php bugfix(73586); ?> (php_user_filter::$stream is not set to the
stream the filter is working on).</li>
+ <li><?php bugfix(72853); ?> (stream_set_blocking doesn't work).</li>
+ <li><?php bugfix(72743); ?> (Out-of-bound read in
php_stream_filter_create).</li>
+ <li>Implemented FR <?php bugl(27814); ?> (Multiple small packets send for
HTTP request).</li>
+ <li><?php bugfix(72764); ?> (ftps:// opendir wrapper data channel
encryption fails with IIS FTP 7.5, 8.5).</li>
+ <li><?php bugfix(72810); ?> (Missing SKIP_ONLINE_TESTS checks).</li>
+ <li><?php bugfix(41021); ?> (Problems with the ftps wrapper).</li>
+ <li><?php bugfix(54431); ?> (opendir() does not work with ftps://
wrapper).</li>
+ <li><?php bugfix(72667); ?> (opendir() with ftp:// attempts to open data
stream for non-existent directories).</li>
+ <li><?php bugfix(72771); ?> (ftps:// wrapper is vulnerable to protocol
downgrade attack).</li>
+ <li><?php bugfix(72534); ?> (stream_socket_get_name crashes).</li>
+ <li><?php bugfix(72439); ?> (Stream socket with remote address leads to a
segmentation fault).</li>
+ </ul></li>
+<li>sysvshm:
+ <ul>
+ <li><?php bugfix(72858); ?> (shm_attach null dereference).</li>
+ </ul></li>
+<li>Tidy:
+ <ul>
+ <li>Implemented support for libtidy 5.0.0 and above.</li>
+ <li>Creating a tidyNode manually will now throw an instance of Error
instead of resulting in a fatal error.</li>
+ </ul></li>
+<li>Wddx:
+ <ul>
+ <li><?php bugfix(73331); ?> (NULL Pointer Dereference in WDDX Packet
Deserialization with PDORow).</li>
+ <li><?php bugfix(72142); ?> (WDDX Packet Injection Vulnerability in
wddx_serialize_value()).</li>
+ <li><?php bugfix(72749); ?> (wddx_deserialize allows illegal memory
access) (Stas)</li>
+ <li><?php bugfix(72750); ?> (wddx_deserialize null dereference).</li>
+ <li><?php bugfix(72790); ?> (wddx_deserialize null dereference with
invalid xml).</li>
+ <li><?php bugfix(72799); ?> (wddx_deserialize null dereference in
php_wddx_pop_element).</li>
+ <li><?php bugfix(72860); ?> (wddx_deserialize use-after-free).</li>
+ <li><?php bugfix(73065); ?> (Out-Of-Bounds Read in
php_wddx_push_element).</li>
+ <li><?php bugfix(72564); ?> (boolean always deserialized as "true")
(Remi)</li>
+ <li>A circular reference when serializing will now throw an instance of
Error instead of resulting in a fatal error.</li>
+ </ul></li>
+<li>XML:
+ <ul>
+ <li><?php bugfix(72135); ?> (malformed XML causes fault) (edgarsandi)</li>
+ <li><?php bugfix(72714); ?> (_xml_startElementHandler() segmentation
fault).</li>
+ <li><?php bugfix(72085); ?> (SEGV on unknown address zif_xml_parse).</li>
+ </ul></li>
+<li>XMLRPC:
+ <ul>
+ <li><?php bugfix(72647); ?> (xmlrpc_encode() unexpected output after
referencing array elements).</li>
+ <li><?php bugfix(72606); ?> (heap-buffer-overflow (write)
simplestring_addn simplestring.c).</li>
+ <li>A circular reference when serializing will now throw an instance of
Error instead of resulting in a fatal error.</li>
+ </ul></li>
+<li>Zip:
+ <ul>
+ <li><?php bugfix(68302); ?> (impossible to compile php with zip
support).</li>
+ <li><?php bugfix(72660); ?> (NULL Pointer dereference in
zend_virtual_cwd).</li>
+ <li><?php bugfix(72520); ?> (Stack-based buffer overflow vulnerability in
php_stream_zip_opener).</li>
+ <li>ZipArchive::addGlob() will throw an instance of Error instead of
resulting in a fatal error if glob support is not available.</li>
+ </ul></li>
+</ul>
+<!-- }}} --></section>
<section class="version" id="7.0.13"><!-- {{{ 7.0.13 -->
<h3>Version 7.0.13</h3>
--
PHP Webmaster List Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php