Version 7.4.33
- GD:
- : OOB read due to insufficient input validation in imageloadfont(). (CVE-2022-31630)
- Hash:
- : buffer overflow in hash_update() on long parameter. (CVE-2022-37454)
Version 7.4.32
- Core:
- : phar wrapper: DOS when using quine gzip file. (CVE-2022-31628)
- : Don't mangle HTTP variable names that clash with ones that have a specific semantic meaning. (CVE-2022-31629)
Version 7.4.30
- mysqlnd:
- : mysqlnd/pdo password buffer overflow. (CVE-2022-31626)
- pgsql:
- : Uninitialized array in pg_query_params(). (CVE-2022-31625)
Version 7.4.29
- Core:
- No source changes to this release. This update allows for re-building the
Windows binaries against upgraded dependencies which have received security
updates.
- Date:
- Updated to latest IANA timezone database (2022a).
Version 7.4.28
- Filter:
- Fix #81708: UAF due to php_filter_float() failing for ints (CVE-2021-21708)
Version 7.4.27
- Core:
- (Error on use static:: in __сallStatic() wrapped to Closure::fromCallable()).
- FPM:
- (Future possibility for heap overflow in FPM zlog).
- GD:
- (libpng warning from imagecreatefromstring).
- OpenSSL:
- (./configure: detecting RAND_egd).
- PCRE:
- (Out of bounds in php_pcre_replace_impl).
- Standard:
- (dns_get_record fails on FreeBSD for missing type).
- (stream_get_contents() may unnecessarily overallocate).
Version 7.4.26
- Core:
- (Header injection via default_mimetype / default_charset).
- Date:
- (Interval serialization regression since 7.3.14 / 7.4.2).
- MBString:
- (mbstring may use pointer from some previous request).
- MySQLi:
- (Stopped unbuffered query does not throw error).
- PCRE:
- (PCRE2 10.35 JIT performance regression).
- Streams:
- (Memory corruption with user_filter).
- XML:
- (special character is breaking the path in xml function). (CVE-2021-21707)
Version 7.4.25
- DOM:
- (DOMElement::setIdAttribute() called twice may remove ID).
- FFI:
- ("TYPE *" shows unhelpful message when type is not defined).
- Fileinfo:
- (High memory usage during encoding detection).
- Filter:
- (FILTER_FLAG_IPV6/FILTER_FLAG_NO_PRIV|RES_RANGE failing).
- FPM:
- (PHP-FPM oob R/W in root process leading to privilege escalation) (CVE-2021-21703).
- SPL:
- (Recursive SplFixedArray::setSize() may cause double-free).
- Streams:
- (stream_isatty emits warning with attached stream wrapper).
- XML:
- (XML_OPTION_SKIP_WHITE strips embedded whitespace).
- Zip:
- (ZipArchive::extractTo() may leak memory).
- (Dirname ending in colon unzips to wrong dir).
Version 7.4.24
- Core:
- (Stream position after stream filter removed).
- (Non-seekable streams don't update position after write).
- (Integer Overflow when concatenating strings).
- GD:
- (During resize gdImageCopyResampled cause colors change).
- Opcache:
- (segfault with preloading and statically bound closure).
- Shmop:
- (shmop_open won't attach and causes php to crash).
- Standard:
- (disk_total_space does not work with relative paths).
- (Unterminated string in dns_get_record() results).
- SysVMsg:
- (Heap Overflow in msg_send).
- XML:
- (xml_parse may fail, but has no error code).
- Zip:
- (ZipArchive::extractTo extracts outside of destination). (CVE-2021-21706)
Version 7.4.23
- Core:
- (php_output_handler_append illegal write access).
- (Weird behaviour when using get_called_class() with call_user_func()).
- (Built-in Webserver Drops Requests With "Upgrade" Header).
- BCMath:
- CGI:
- (HTTP Status header truncation).
- GD:
- (imagefilledellipse does not work for large circles).
- MySQLi:
- (Integer overflow in mysqli_real_escape_string()).
- OpenSSL:
- (Error build openssl extension on php 7.4.22).
- PDO_ODBC:
- (PDO_ODBC doesn't account for SQL_NO_TOTAL).
- Phar:
- : Symlinks are followed when creating PHAR archive.(cmb)
- Shmop:
- (shmop can't read beyond 2147483647 bytes).
- Standard:
- (Integer overflow on substr_replace).
- (getimagesize returns 0 for 256px ICO images).
- (Heap buffer overflow via str_repeat).
- Streams:
- (Segfault when removing a filter).
Version 7.4.22
- Core:
- (copy() and stream_copy_to_stream() fail for +4GB files).
- (incorrect handling of indirect vars in __sleep).
- (PHP built-in web server resets timeout when it can kill the process).
- (Built-in Webserver - overwrite $_SERVER['request_uri']).
- (Using return value of zend_assign_to_variable() is not safe).
- (--r[fcez] always return zero exit code).
- Intl:
- (Locale::lookup() wrong result with canonicalize option).
- (IntlDateFormatter fails for "GMT+00:00" timezone).
- (grapheme_strrpos() broken for negative offsets).
- OpenSSL:
- (openssl_csr_sign truncates $serial).
- PCRE:
- (PCRE2 10.37 shows unexpected result).
- (Too much memory is allocated for preg_replace()).
- Standard:
- (flock() only locks first byte of file).
Version 7.4.21
- Core:
- (Double free in realpath_cache_clean()).
- (open_basedir bypass through adding "..").
- (Typed property performance degradation with .= operator).
- (Integer underflow in memory limit comparison).
- (SSRF bypass in FILTER_VALIDATE_URL). (CVE-2021-21705)
- Bzip2:
- (fflush before stream_filter_remove corrupts stream).
- OpenSSL:
- (native Windows cert verification uses CN as server name).
- PDO_Firebird:
- (Stack buffer overflow in firebird_info_cb). (CVE-2021-21704)
- (SIGSEGV in firebird_handle_doer). (CVE-2021-21704)
- (SIGSEGV in firebird_stmt_execute). (CVE-2021-21704)
- (Crash while parsing blob data in firebird_fetch_blob). (CVE-2021-21704)
- Standard:
- (phpinfo(INFO_VARIABLES) "Array to string conversion").
Version 7.4.20
- Core:
- (Method name corruption related to repeated calls to call_user_func_array).
- (opendir() warning wrong info when failed on Windows).
- (HTTP Authorization schemes are treated as case-sensitive).
- (Memory exhaustion on invalid string offset).
- FPM:
- FTP:
- (Info leak in ftp extension).
- (Wrong FTP error messages).
- GD:
- (GD install is affected by external libgd installation).
- MBString:
- (mb_convert_encoding removes references from arrays).
- ODBC:
- (ODBC doesn't account for SQL_NO_TOTAL indicator).
- PDO_MySQL:
- (PDO discards error message text from prepared statement).
- PDO_ODBC:
- (bound parameters ignore explicit type definitions).
- pgsql:
- Fixed php_pgsql_fd_cast() wrt. php_stream_can_cast().
- SPL:
- (SplFileObject::DROP_NEW_LINE is broken for NUL and CR).
- Opcache:
- (switch statement behavior inside function).
- (Opcache optimization assumes wrong part of ternary operator in if-condition).
- XMLReader:
- (XMLReader: encoding length not checked).
- Zip:
- (ZipArchive::extractTo() ignores references).
Version 7.4.19
- PDO_pgsql:
- Reverted bug fix for #80892 (PDO::PARAM_INT is treated the same as PDO::PARAM_STR).
Version 7.4.18
- Core:
- (Error handler that throws ErrorException infinite loop).
- (Flushing streams with compression filter is broken).
- Dba:
- (dba_popen() may cause segfault during RSHUTDOWN).
- DOM:
- (UAF when appending DOMDocument to element).
- FPM:
- (Duplication of info about inherited socket after pool removing).
- FTP:
- (SSL_read on shutdown, ftp/proc_open).
- Imap:
- (imap_mail_compose() header injection).
- Intl:
- (msgfmt_format() does not accept DateTime references).
- LibXML:
- (simplexml_load_file() doesn't use HTTP headers).
- (Invalid memory access in php_libxml_xmlCheckUTF8).
- MySQLnd:
- (SegFault when disabling ATTR_EMULATE_PREPARES and MySQL 8.0).
- (Calling stmt_store_result after fetch doesn't throw an error).
- (mysqlnd's mysql_clear_password does not transmit null-terminated password).
- Opcache:
- (create simple class and get error in opcache.so).
- (Variables become null in if statements).
- Pcntl:
- (Potential integer overflow in pcntl_exec()).
- PCRE:
- (preg_split ignores limit flag when pattern with \K has 0-width fullstring match).
- PDO_ODBC:
- (PDO ODBC truncates BLOB records at every 256th byte).
- PDO_pgsql:
- (PDO::PARAM_INT is treated the same as PDO::PARAM_STR).
- phpdbg:
- (Exit code is 0 when could not open file).
- Session:
- (session_name() problem with backslash).
- (Cannot set save handler when save_handler is invalid).
- SOAP:
- (SOAP special XML characters in namespace URIs not encoded).
- Standard:
- (http wrapper silently ignores long Location headers).
- (phpinfo(INFO_CREDITS) displays nothing in CLI).
- (HTTP wrapper waits for HTTP 1 response after HTTP 101).
- (Taking a reference to $_SERVER hides its values from phpinfo()).
- (file_get_contents() maxlen fails above (2**31)-1 bytes).
- MySQLi:
- (x() and y() truncating floats to integers).
- OPcache:
- (opcache doesn't honour pcre.jit option).
- OpenSSL:
- (Providing RSA key size < 512 generates key that crash PHP).
- Phar:
- (Unclear error message wrt. __halt_compiler() w/o semicolon) (cmb)
- (Phar does not mark UTF-8 filenames in ZIP archives).
- (Phar cannot compress large archives).
- SPL:
- (Iterating after failed ArrayObject::setIteratorClass() causes Segmentation fault).
- Zip:
- (Fix for bug 79296 should be based on runtime version).
Version 7.4.16
- Core:
- (mail(): Headers after Bcc headers may be ignored).
- MySQLnd:
- (mysqlnd's mysql_clear_password does not transmit null-terminated password).
- MySQLi:
- (x() and y() truncating floats to integers).
- OPcache:
- (opcache doesn't honour pcre.jit option).
- OpenSSL:
- (Providing RSA key size < 512 generates key that crash PHP).
- Phar:
- (Unclear error message wrt. __halt_compiler() w/o semicolon) (cmb)
- (Phar does not mark UTF-8 filenames in ZIP archives).
- (Phar cannot compress large archives).
- SPL:
- (Iterating after failed ArrayObject::setIteratorClass() causes Segmentation fault).
- Standard:
- (file_get_contents() maxlen fails above (2**31)-1 bytes).
- Zip:
- (Fix for bug 79296 should be based on runtime version).
Version 7.4.15
- Core:
- (bogus parse error on >4GB source code).
- (filter buffers entire read until file closed).
- Curl:
- (Resetting POSTFIELDS to empty array breaks request).
- Date:
- (last day of the month causes runway cpu usage.
- MySQLi:
- (mysqlnd with MYSQLI_OPT_INT_AND_FLOAT_NATIVE fails to interpret bit columns).
- (Fetching resultsets from stored procedure with cursor fails).
- (segfault using prepared statements on stored procedures that use a cursor).
- (Crash in mysqlnd_fetch_stmt_row_cursor when calling an SP with a cursor).
- Phar:
- (Incorrect locator detection in ZIP-based phars).
- (Compressed ZIP Phar extractTo() creates garbage files).
- SOAP:
- (Null Dereference in SoapClient). (CVE-2021-21702)
Version 7.4.14
- Core:
- (Can't rebind closure returned by Closure::fromCallable()).
- (PHPIZE configuration has outdated PHP_RELEASE_VERSION).
- (White space not unfolded for CC/Bcc headers).
- (Running dtrace scripts can cause php to crash).
- (Build of PHP extension fails due to configuration gap with libtool).
- (configure filtering out -lpthread).
- (stream filter loses final block of data).
- Fileinfo:
- (finfo_open crafted magic parsing SIGABRT).
- FPM:
- (FPM returns 200 status on request without SCRIPT_FILENAME env).
- Intl:
- (MessageFormatAdapter::getArgTypeList redefined).
- OpenSSL:
- (OpenSSL extension fails to build against LibreSSL due to lack of OCB support).
- Phar:
- (Phar Zip parse crash - mmap fail).
- (`PharData` says invalid checksum for valid tar).
- (PharData::addEmptyDir('/') Possible integer overflow).
- PDO MySQL:
- (PDOStatement::fetchAll() throws for upsert queries).
- (nextRowset() ignores MySQL errors with native prepared statements).
- (PDO::exec() - Bad error handling with multiple commands).
- (Unexpected "Cannot execute queries while other unbuffered queries").
- (Multiple statements in init command triggers unbuffered query error).
- (PDOStatement cannot be GCed/closeCursor-ed when a PROCEDURE resultset SIGNAL).
- Standard:
- (FILTER_VALIDATE_URL accepts URLs with invalid userinfo). (CVE-2020-7071)
- (Return Value of zend_fstat() not Checked).
- (References to null-serialized object break serialize()).
- Tidy:
- (ob_tidyhandler is never reset).
- Zlib:
- (Support for flushing in zlib stream).
Version 7.4.13
- Core:
- (ADD_EXTENSION_DEP() fails for ext/standard and ext/date).
- (Windows Deduplication Enabled, randon permission errors).
- COM:
- (com_event_sink crashes on certain arguments).
- DOM:
- (loadHTML() truncates at NUL bytes).
- FFI:
- (FFI doesn't handle well PHP exceptions within callback).
- IMAP:
- (imap_sort() does not return FALSE on failure).
- (segfault on imap_reopen).
- (imap_rfc822_write_address() leaks memory).
- Fixed minor regression caused by fixing bug .
- (imap_mail_compose() segfaults for multipart with rfc822).
- MySQLi:
- (mysqli_store_result does not report error from lock wait timeout).
- (mysqli::commit does not throw if MYSQLI_REPORT_ERROR enabled and mysqlnd used).
- (mysqlnd segfault (fetch_row second parameter typemismatch)).
- ODBC:
- (Fetching may rely on uninitialized data).
- Opcache:
- (PHP with Opcache crashes when a file with specific name is included).
- Fixed run-time binding of preloaded dynamically declared function.
- OpenSSL:
- (openssl_encrypt / openssl_decrypt fail with OCB mode).
- PDO MySQL:
- (No PDOException or errorCode if database becomes unavailable before PDO::commit).
- (PDOStatement::fetch() does not throw exception on broken server connection).
- SNMP:
- (disable md5 code when it is not supported in net-snmp).
- Standard:
- (parse_url silently drops port number 0).
Version 7.4.12
- Core:
- (Copying large files may have suboptimal performance).
- (copy command is limited to size of file it can copy).
- (Covariant return types failing compilation).
- (Segfault when iterating over FFI object).
- Calendar:
- (jdtounix() fails after 2037).
- IMAP:
- (imap_mail_compose() segfaults on certain $bodies).
- (imap_mail_compose() may modify by-val parameters).
- (imap_mail_compose() may leak memory).
- (imap_mail_compose() leaks envelope on malformed bodies).
- (imap_mail_compose() does not validate types/encodings).
- (imap_sort() leaks sortpgm memory).
- MySQLnd:
- (mysqlnd.debug doesn't recognize absolute paths with slashes).
- (mysqli_query() fails for ~16 MB long query when compression is enabled).
- ODBC:
- (odbc_specialcolumns() no longer accepts $nullable).
- (BINARY strings may not be properly zero-terminated).
- (Failure to fetch error message).
- (odbc_execute() moves internal pointer of $params).
- (odbc_next_result corrupts prepared resource).
- OPcache:
- (Optimizer pass 6 removes variables used for ibm_db2 data binding).
- (Assertion failure during block assembly of unreachable free with leading nop).
- PCRE:
- Updated to PCRE 10.35.
- (Erroneous whitespace match with JIT only).
- PDO_ODBC:
- (NULL Pointer dereference in odbc_handle_preparer).
- Standard:
- (parse_url does not accept URLs with port 0).
- (Inconsistent stream_wrapper_restore() errors).
- (Incorrect message in fopen on invalid mode).
- Tidy:
- (tidyNode::isHtml() is completely broken).
Version 7.4.11
- Core:
- (PHP parses encoded cookie names so malicious `__Host-` cookies can be sent). (CVE-2020-7070)
- (passing value to by-ref param via CUFA crashes).
- (Typed property must not be accessed before initialization when __get() declared).
- (Bug has not been fixed for Windows).
- (Memleak when coercing integers to string via variadic argument).
- Calendar:
- (Potential type confusion in unixtojd() parameter parsing).
- COM:
- (COM obj parameters passed by reference are not updated).
- OPcache:
- (calc free space for new interned string is wrong).
- (FREE for SWITCH_STRING optimized away).
- (opcache.file_cache causes SIGSEGV when custom opcode handlers changed).
- OpenSSL:
- (Wrong ciphertext/tag in AES-CCM encryption for a 12 bytes IV). (CVE-2020-7069)
- PDO:
- (Terrible performance using $query->fetch on queries with many bind parameters).
- SOAP:
- (SoapClient stumbles over WSDL delivered with "Transfer-Encoding: chunked").
- Standard:
- (str_ireplace bug with diacritics characters).
- (getmxrr test bug).
- (Modifying bucket->data by-ref has no effect any longer).
- (Omitting the port in bindto setting errors).
Version 7.4.10
- Core:
- (PHP_CONFIG_FILE_PATH is meaningless).
- (File extensions are case-sensitive).
- (realpath() erroneously resolves link to link).
- (PHP_CHECK_GCC_ARG does not allow flags with equal sign).
- (Stack use-after-scope in define()).
- (CRLF-only line in heredoc causes parsing error).
- (Memory leak on invalid offset type in compound assignment).
- COM:
- (com_load_typelib holds reference, fails on second call).
- Exif:
- (Many errors from exif_read_data).
- Gettext:
- (Tests fail due to relying on Linux fallback behavior for gettext()).
- LDAP:
- OPcache:
- (php failed with error after temp folder cleaned up).
- (File cache segfault with a static variable in inherited method).
- PDO:
- (errorInfo property of PDOException is null when PDO::__construct() fails).
- Session:
- (Return type does not match in ext/session/mod_mm.c).
- Standard:
- (array_merge_recursive() crashes when called with array with single reference).
- (getmxrr always returns true on Alpine linux).
- (Memory leak in str_replace of empty string).
- XML:
- (Crash after multiple calls to xml_parser_free()).
Version 7.4.9
- Apache:
- (Upgrade apache2handler's php_apache_sapi_get_request_time to return usec).
- COM:
- (BSTR to PHP string conversion not binary safe).
- (DCOM does not work with Username, Password parameter).
- Core:
- (serialize() and unserialize() methods can not be called statically).
- (Segfault in php_str_replace_common).
- (Assertion failure if dumping closure with unresolved static variable).
- (Assertion failure when assigning property of string offset by reference).
- (HT iterators not removed if empty array is destroyed).
- (Changing array during undef index RW error segfaults).
- (Use after free if changing array during undef var during array write fetch).
- (Use after free if string used in undefined index warning is changed).
- (Public non-static property in child should take priority over private static).
- (getimagesize function silently truncates after a null byte) (cmb)
- Fileinfo:
- (finfo_file crash (FILEINFO_MIME)).
- FTP:
- (ftp_size on large files).
- Mbstring:
- (mb_strimwidth does not trim string).
- Phar:
- (Use of freed hash key in the phar_parse_zipfile function). (CVE-2020-7068)
- Reflection:
- (::getStaticProperties() ignores property modifications).
- (::getStaticPropertyValue() throws on protected props).
- (Use after free when type duplicated into ReflectionProperty gets resolved).
- Standard:
- (Can't copy() large 'data://' with open_basedir).
- (dns_check_record() always return true on Alpine).
- (array_walk() does not respect property types).
Version 7.4.8
- Core:
- (zend_init_fpu() alters FPU precision).
- (php-win.exe 100% cpu lockup).
- (get_defined_functions(true) may miss functions).
- (Fake reflection scope affects __toString()).
- Fixed possibly unsupported timercmp() usage.
- Exif:
- (Sony picture - PHP Warning - Make, Model, MakerNotes).
- Fileinfo:
- (mime_content_type/finfo returning incorrect mimetype).
- Filter:
- (Invalid memory access in php_filter_strip).
- GD:
- (imagescale adds black border with IMG_BICUBIC).
- OpenSSL:
- (default_socket_timeout=-1 causes connection to timeout).
- PDO SQLite:
- (PDOStatement::getColumnMeta fails on empty result set).
- phpdbg:
- (phpdbg will not accept input on restart execution).
- (phpdbg fails with windows error prompt at "watch array").
- Fixed several mostly Windows related phpdbg bugs.
- SPL:
- (Reproducible segfault in error_handler during GC involved an SplFileObject).
- Standard:
- (segfault with streams and invalid data).
Version 7.4.7
- Core:
- (coredump in set_error_handler).
- (Private SHM is not private on Windows).
- (.user.ini does not inherit).
- (Regression in 7.4.6 when yielding an array based generator).
- ("yield from" hangs when invalid value encountered).
- FFI:
- (FFI: var_dumping unions may segfault).
- GD:
- (Wrong GIF header written in GD GIFEncode).
- MySQLnd:
- (MySQL FLOAT truncates to int some locales).
- Opcache:
- (Boolean opcache settings ignore on/off values).
- (Preloading segfault with inherited method using static variable).
- (RTD collision with opcache).
- Standard:
- (dns_get_record() fails with DNS_ALL).
Version 7.4.6
- Core:
- (Generator yields no items after valid() call).
- (casting object into array creates references).
- (Memory leaks while including unexistent file).
- (PHP incompatible with 3rd party file system on demand).
- (Unable to interact with files inside a VFS for Git repository).
- (Long variables cause OOM and temp files are not cleaned). (CVE-2019-11048).
- (Long variables in multipart/form-data cause OOM and temp files are not cleaned). (CVE-2019-11048).
- DOM:
- (DOMNode::normalize() doesn't remove empty text nodes).
- EXIF:
- (ext/exif/tests/bug79046.phpt fails on Big endian arch).
- FCGI:
- (Search for .user.ini extends up to root dir).
- MBString:
- (Segfault in mb_chr() if internal encoding is unsupported).
- OpenSSL:
- (stream_socket_client() throws an unknown error sometimes with <1s timeout).
- PCRE:
- Phar:
- (Memory leak on duplicate metadata).
- SimpleXML:
- (Different object of the same xml between 7.4.5 and 7.4.4).
- SPL:
- (__debugInfo() ignored while extending SPL classes).
- (ArrayObject serialization drops the iterator class).
- Standard:
- (SIGSEGV when closing stream handle with a stream filter appended).
- (Serializing uninitialized typed properties with __sleep should not throw).
Version 7.4.5
- Core:
- (When copy empty array, next key is unspecified).
- (Invalid pointer address).
- CURL:
- (curl_copy_handle() memory leak).
- Date:
- (DateTime hour incorrect during DST jump forward).
- (DateTimeZone loose comparison always true).
- FPM:
- (Allow numeric [UG]ID in FPM listen.{owner,group}) (Andre Nathan)
- Iconv:
- (Some iconv functions cut Windows-1258).
- OPcache:
- (Opcache chokes and uses 100% CPU on specific script).
- Session:
- (session_create_id() fails for active sessions).
- Shmop:
- (Integer Overflow in shmop_open()).
- SimpleXML:
- (SXE properties may lack attributes and content).
- SOAP:
- (SOAP request segfaults when any request parameter is missing).
- Spl:
- (SplStack::unserialize() behavior).
- (Null coalescing operator failing with SplFixedArray).
- Standard:
- (shell_exec() silently truncates after a null byte).
- (system() swallows last chunk if it is exactly 4095 bytes without newline).
- (OOB Read in urldecode()). (CVE-2020-7067)
- Zip:
- (ZipArchive::open fails on empty file).
- (php_zip_glob uses gl_pathc after call to globfree).
Version 7.4.4
- Core:
- (get_headers() silently truncates after a null byte) (CVE-2020-7066)
- (php crashes during parsing INI file).
- (restore_error_handler does not restore previous errors mask).
- COM:
- (COMPersistHelper::SaveToFile can save to wrong location).
- (COM error constants don't match com_exception codes on x86).
- (Garbage collecting variant objects segfaults).
- (Traversing empty VT_ARRAY throws com_exception).
- (com_print_typeinfo prints duplicate variables).
- (php_istreams are never freed).
- (com_print_typeinfo() leaks memory).
- CURL:
- (Copied cURL handles upload empty file).
- (Content-Length missing when posting a curlFile with curl).
- DOM:
- : (Write Access Violation in DomImplementation).
- (DOMDocumentType::$childNodes is NULL).
- Enchant:
- (enchant_dict_suggest() fails on big endian architecture).
- EXIF:
- (Use-of-uninitialized-value in exif) (CVE-2020-7064).
- Fileinfo:
- (Segfault in libmagic patch contains a buffer overflow).
- FPM:
- (operator displayed instead of the real error message).
- (PHP-FPM & Primary script unknown).
- MBstring:
- (mb_strtolower (UTF-32LE): stack-buffer-overflow at php_unicode_tolower_full) (CVE-2020-7065).
- MySQLi:
- (mysqli reports different client_version).
- MySQLnd:
- (Support auth_plugin_caching_sha2_password on Windows).
- Opcache:
- (preloading causes php-fpm to segfault during exit).
- PCRE:
- (Memory corruption in preg_replace/preg_replace_callback and unicode).
- (Segmentation fault on preg_match()).
- (Duplicate named groups (?J) prefer last alternative even if not matched).
- PDO_ODBC:
- (PDOStatement::nextRowset() leaks column values).
- Reflection:
- (Property with heredoc default value returns false for getDocComment).
- SQLite3:
- (::columnType() may fail after SQLite3Stmt::reset()).
- Standard:
- (getenv() w/o arguments not showing changes).
- (Improper injection of Host header when using fopen for http requests).
- Zip:
- (ZipArchive::addFile doesn't honor start/length parameters).
Version 7.4.3
- Core:
- (cscript can fail to run on some systems).
- (Property nullability lost when using multiple property definition).
- (Code 0 is returned on invalid options).
- (Delayed variance check involving trait segfaults).
- (cookie values with spaces fail to round-trip).
- (Use-after-free when accessing already destructed backtrace arguments).
- COM:
- (Garbage collecting variant objects segfaults).
- CURL:
- (Hypothetical use-after-free in curl_multi_add_handle()).
- FFI:
- IMAP:
- (IMAP extension can't find OpenSSL libraries at configure time).
- Intl:
- (NumberFormatter::format() may detect wrong type).
- Libxml:
- (Error in SoapClient ctor disables DOMDocument::save()).
- MBString:
- (SEGV in mb_convert_encoding with non-string encodings).
- MySQLi:
- (Properties may emit a warning on var_dump()).
- MySQLnd:
- (mysqlnd may fetch wrong column indexes with MYSQLI_BOTH).
- (MySQL caching_sha2_password Access denied for password with more than 20 chars).
- Opcache:
- (Eval class during preload causes class to be only half available).
- (Preloading segfaults if preload_user is used).
- (Incorrect type inference for self::$field =& $field).
- OpenSSL:
- Phar:
- (Files added to tar with Phar::buildFromIterator have all-access permissions). (CVE-2020-7063)
- (heap-buffer-overflow in phar_extract_file). (CVE-2020-7061)
- (PharFileInfo::decompress not working).
- Reflection:
- (ReflectionClass::isCloneable call reflected class __destruct).
- Session:
- (Null Pointer Dereference in PHP Session Upload Progress). (CVE-2020-7062)
- Standard:
- (Memory leak when using stream_filter_append).
- (PASSWORD_DEFAULT should match PASSWORD_BCRYPT instead of being null).
- Testing:
- (bug45161.phpt takes forever to finish).
- XSL:
- (XSL callbacks with nodes as parameter leak memory).
- Zip:
- Add ZipArchive::CM_LZMA2 and ZipArchive::CM_XZ constants (since libzip 1.6.0).
- Add ZipArchive::RDONLY (since libzip 1.0.0).
- Add ZipArchive::ER_* missing constants.
- Add ZipArchive::LIBZIP_VERSION constant.
- (Wrong return for ZipArchive::addEmptyDir Method).
Version 7.4.2
- Core:
- Preloading support on Windows has been disabled.
- (class_exists returns True for classes that are not ready to be used).
- (plus signs in cookie values are converted to spaces).
- (Destructor during CV freeing causes segfault if opline never saved).
- (Abstract method implementation from trait does not check "static").
- (Cycle leak when using function result as temporary).
- (General performance regression with PHP 7.4 on Windows).
- (Serializing uninitialized typed properties with __sleep makes unserialize throw).
- CURL:
- (Curl timeout error with specific url and post).
- (curl openssl does not respect PKG_CONFIG_PATH).
- Date:
- (undefined-behavior in php_date.c).
- DBA:
- ([LMDB] MDB_MAP_FULL: Environment mapsize limit reached).
- Exif:
- (NaN to int cast undefined behavior in exif).
- Fileinfo:
- (locale information change after mime_content_type).
- GD:
- (gdTransformAffineCopy() may use unitialized values).
- (gdTransformAffineCopy() changes interpolation method).
- Libxml:
- (Use After Free's in XMLReader / XMLWriter).
- Mbstring:
- (global buffer-overflow in `mbfl_filt_conv_big5_wchar`). (CVE-2020-7060)
- OPcache:
- (erroneous optimization of re-assigned $GLOBALS).
- (Preloading trait method with static variables).
- (Conflict in RTD key for closures results in crash).
- (Opcache segfaults when inheriting ctor from immutable into mutable class).
- (Warning Opcode handlers are unusable due to ASLR).
- (Typed property become unknown with OPcache file cache).
- Pcntl:
- (Converting null to string in error message is bad DX).
- PDO_PgSQL:
- (pdo_pgsql config.w32 cannot find libpq-fe.h).
- (pgsqlGetNotify() overlooks dead connection).
- (pdo_pgsql returns dead persistent connection).
- Session:
- (heap use-after-free in session_create_id()).
- (Session unserialization problem).
- Shmop:
- Sqlite3:
- (sqlite does not respect PKG_CONFIG_PATH during compilation).
- Spl:
- (SplFileObject::fputcsv returns -1 on failure).
- Standard:
- (OOB read in php_strip_tags_ex). (CVE-2020-7059)
- (Non-blocking socket stream reports EAGAIN as error).
- (Using empty additional_headers adding extraneous CRLF).
Version 7.4.1
- Bcmath:
- (Buffer underflow in bc_shift_addsub). (CVE-2019-11046).
- Core:
- (link() silently truncates after a null byte on Windows). (CVE-2019-11044).
- (DirectoryIterator class silently truncates after a null byte). (CVE-2019-11045).
- (mail() may release string with refcount==1 twice). (CVE-2019-11049).
- (RW fetches do not throw "uninitialized property" exception).
- (Calling __autoload() with incorrect EG(fake_scope) value).
- (is_file fails to detect file).
- (fgets(STDIN) fails on Windows).
- (call_user_func(['parent', ...]) fails while other succeed).
- (Uninitialized property triggers __get()).
- (Segmentation fault on Symfony cache:clear).
- GD:
- (GD build broken with -D SIGNED_COMPARE_SLOW).
- (Artifacts when convoluting image with transparency).
- EXIF:
- (Use-after-free in exif parsing under memory sanitizer). (CVE-2019-11050).
- (Heap-buffer-overflow READ in exif). (CVE-2019-11047).
- FPM:
- (Partially working php-fpm ater incomplete reload).
- (php-fpm service fails to start).
- (php-fpm 7.4.0 don't send mail via mail()).
- Intl:
- (INTL Support for accounting format).
- Mysqlnd:
- (ZLIB_LIBS not added to EXTRA_LIBS).
- OPcache:
- Fixed $x = (bool)$x; with opcache (should emit undeclared variable notice).
- (Preloading removes classes that have dependencies).
- PCRE:
- (preg_match() may return integer > 1).
- Reflection:
- (Reflection detects abstract non-static class as abstract static. IS_IMPLICIT_ABSTRACT is not longer used).
- Standard:
- (var_export'ing certain class instances segfaults).
- (imploding $GLOBALS crashes).
- (Integer overflow in pack causes out-of-bound access).
- (strip_tags allows / in tag name => whitelist bypass).
Version 7.4.0
- Core:
- Implemented RFC: Deprecate curly brace syntax for accessing array elements and string offsets.
- Implemented RFC: Deprecations for PHP 7.4.
- (Crash when lexing).
- (CGI doesn't properly validate shebang line contains #!).
- (Self-assignment in list() may have inconsistent behavior).
- (Use After Free in GC with Certain Destructors).
- (Inconsistent: No warning in some cases when stdObj is created on the fly).
- (Add array_key_exists() to the list of specially compiled functions).
- (__METHOD__ inconsistent outside of method).
- (Aliases during inheritance type checks affected by opcache).
- (Support custom CFLAGS and LDFLAGS from environment).
- (Stack Overflow caused by circular reference in garbage collection).
- (Interactive mode does not support PHP 7.3-style heredoc).
- (call_user_func() passes $this to static methods).
- (PHP eats the first byte of a program that comes from process substitution).
- (Segfault caused by indirect expressions in PHP 7.4a1).
- (SEND_VAR_NO_REF does not always send reference).
- (Segmentation fault during by-reference property assignment).
- (Segfault in built-in webserver).
- (Can't access OneDrive folder).
- (Unexpected __set behavior with typed properties).
- (Deprecation notice during string conversion converted to exception hangs).
- (Static properties/variables containing cycles report as leak).
- (Include of stream wrapper not reading whole file).
- (Segmentation fault on zend_check_protected).
- (Array returned from ArrayAccess is incorrectly unpacked as argument).
- (Cast to object confuses GC, causes crash).
- (fstat mode has unexpected value on PHP 7.4).
- (Second file_put_contents in Shutdown hangs script).
- (Broken file includes with user-defined stream filters).
- (Corruption when __unserializing deeply nested structures).
- (Parse error due to heredoc identifier followed by digit).
- (Consecutive numeric separators cause OOM error).
- (PEAR installation failure).
- (Crash when using undefined variable as object).
- (auto_detect_line_endings value not parsed as bool).
- (token_get_all() does not properly tokenize FOO<?php with short_open_tag=0).
- (Does not compile with DTRACE anymore).
- (Out of memory error).
- (method_exists() in php74 works differently from php73 in checking priv. methods).
- (SEGFAULT in ZEND_UNSET_OBJ_SPEC_VAR_CONST_HANDLER).
- (Memory corruption using Closure::bindTo).
- (Parse errors classified as highest log-level).
- (stream_write bad error detection).
- (redefinition of typedef zend_property_info).
- (./configure generates invalid php_version.h).
- Fixed incorrect usage of QM_ASSIGN instruction. It must not return IS_VAR. As a side effect, this allowed passing left hand list() "by reference", instead of compile-time error.
- CLI:
- The built-in CLI server now reports the request method in log files.
- COM:
- Deprecated registering of case-insensitive constants from typelibs.
- (new COM Crash).
- (Appending to a variant array causes segfault).
- CURL:
- (Use curl_multi_wait() so that timeouts are respected).
- (CURLFile should support UNICODE filenames).
- Deprecated CURLPIPE_HTTP1.
- Deprecated $version parameter of curl_version().
- Date:
- Updated timelib to 2018.02.
- (discrepency between time and microtime).
- (\DateInterval incorrectly unserialized).
- (print_r of DateTime creating side-effect).
- (Casting a DateTime to array no longer returns its properties).
- (Serialising DatePeriod converts DateTimeImmutable).
- Exif:
- (Exif crash (bus error) due to wrong alignment and invalid cast).
- (heap-buffer-overflow on exif_process_user_comment). (CVE-2019-11042)
- (heap-buffer-overflow on exif_scan_thumbnail). (CVE-2019-11041)
- Fileinfo:
- (finfo_file treats JSON file as text/plain).
- (finfo_file shows wrong mime-type for .tga file).
- Filter:
- The filter extension no longer has the --with-pcre-dir on Unix builds, allowing the extension to be once more compiled as shared using ./configure.
- Added min_range and max_range options for FILTER_VALIDATE_FLOAT.
- FFI:
- Added FFI extension.
- (OOB in ZEND_FUNCTION(ffi_trampoline)).
- (is_callable() on FFI\CData throws Exception).
- (Function name mangling is wrong for some parameter types).
- (Failing FFI::cast() may leak memory).
- (Zend memory heap corruption with preload and casting).
- (Support __vectorcall convention with FFI).
- Added missing FFI::isNull().
- FPM:
- (systemd service should be hardened).
- (master PHP-fpm is stopped on multiple reloads).
- (fpm log prefix message includes wrong stdout/stderr notation).
- (env_path_info underflow in fpm_main.c can lead to RCE). (CVE-2019-11043)
- GD:
- Implemented the scatter filter (IMG_FILTER_SCATTER).
- The bundled libgd behaves now like system libgd wrt. IMG_CROP_DEFAULT never falling back to IMG_CROP_SIDES.
- The default $mode parameter of imagecropauto() has been changed to IMG_CROP_DEFAULT; passing -1 is now deprecated.
- Added support for aspect ratio preserving scaling to a fixed height for imagescale().
- Added TGA read support.
- (imagecropauto() $threshold differs from external libgd).
- (cannot detect recent versions of freetype with pkg-config).
- (missing freetype support/functions with external gd).
- GMP:
- Hash:
- Iconv:
- (Bus error in configure test for iconv //IGNORE).
- (Wrong libiconv version displayed).
- Libxml:
- (libxml_disable_entity_loader settings is shared between requests (cgi-fcgi)).
- InterBase:
- Unbundled the InterBase extension and moved it to PECL.
- Intl:
- Raised requirements to ICU ≥ 50.1.
- Changed ResourceBundle to implement Countable.
- Changed default of $variant parameter of idn_to_ascii() and idn_to_utf8().
- LDAP:
- Deprecated ldap_control_paged_result_response and ldap_control_paged_result
- LiteSpeed:
- Updated to LiteSpeed SAPI V7.5 (Fixed clean shutdown).
- Updated to LiteSpeed SAPI V7.4.3 (increased response header count limit from 100 to 1000, added crash handler to cleanly shutdown PHP request, added CloudLinux mod_lsapi mode).
- (After "POST data can't be buffered", using php://input makes huge tmp files).
- MBString:
- (mb-functions do not respect default_encoding).
- (mb_decode_numericentity: args number inconsistency).
- (mb_check_encoding() no longer supports stringable objects).
- MySQLi:
- (Reading $dbc->stat modifies $dbc->affected_rows).
- (SSL settings aren't respected when persistent connections are used).
- (MariaDB server version incorrectly detected).
- (Empty row pocket).
- MySQLnd:
- Fixed connect_attr issues and added the _server_host connection attribute.
- (mysqlnd exposes 160 lines of stats in phpinfo).
- ODBC:
- (odbc_close() closes arbitrary resources).
- Opcache:
- Implemented preloading RFC.
- Add opcache.preload_user INI directive.
- Added new INI directive opcache.cache_id (Windows only).
- (Path resolution fails if opcache disabled during request).
- (Preloading segfaults at preload time and at runtime).
- (Opcache stats for cache hits are capped at 32bit NUM).
- (Invalid result of if-else).
- (Failure to detect smart branch in DFA pass).
- (Incorrect preloading of constant static properties).
- (opcache_compile_file(__FILE__); segfaults).
- (Cannot make preload work).
- (Preloading segfaults with inherited typed property).
- (Incorrectly computed opcache checksum on files with non-ascii characters).
- OpenSSL:
- Added TLS 1.3 support to streams including new tlsv1.3 stream.
- Added openssl_x509_verify function.
- openssl_random_pseudo_bytes() now throws in error conditions.
- Changed the default config path (Windows only).
- (Segmentation fault upon stream_socket_accept of exported socket-to-stream).
- (Assertion failure in openssl_random_pseudo_bytes).
- (TLS issues from HTTP request affecting other encrypted connections).
- Pcntl:
- (PHP is preventing SIGALRM from specifying SA_RESTART).
- PCRE:
- (Support flags in preg_replace_callback).
- (Repeated UTF-8 validation of same string in UTF-8 mode).
- (Preg_match_all should return NULLs on trailing optional capture groups).
- (Array cross-border reading in PCRE).
- (Bundled pcre2 library missing LICENCE file).
- PDO:
- (Allow escaping question mark placeholders). https://wiki.php.net/rfc/pdo_escape_placeholders
- (Disable cloning of PDO handle/connection objects).
- (PDO - support username and password specified in DSN).
- PDO_Firebird:
- (PDO_Firebird should also support dialect 1).
- (PDO firebird support type Boolean in input parameters).
- PDO_MySQL:
- (SP call yields additional empty result set).
- (Regression caused by "SP call yields additional empty result set").
- PDO_OCI:
- Support Oracle Database tracing attributes ACTION, MODULE, CLIENT_INFO, and CLIENT_IDENTIFIER.
- (PDO_OCI getColumnMeta() not implemented).
- PDO_SQLite:
- Implemented sqlite_stmt_readonly in PDO_SQLite.
- Raised requirements to SQLite 3.5.0.
- (SegFault when reuse statement after schema has changed).
- (Remove -lrt from pdo_sqlite.so).
- Phar:
- (Potential UAF in Phar RSHUTDOWN).
- phpdbg:
- (phpdbg support for display_errors=stderr).
- (too many open files).
- (phpdbg segfaults on listing some conditional breakpoints).
- (phpdbg build fails when readline is shared).
- Recode:
- Unbundled the recode extension.
- Reflection:
- (Unserialized reflection objects are broken, they shouldn't be serializable).
- (\ReflectionReference::fromArrayElement() returns null while item is a reference).
- (Cannot "manually" unserialize class that is final and extends an internal one).
- (ReflectionClass::implementsInterface - inaccurate error message with traits).
- (ReflectionNamedType on Typed Properties Crash).
- Session:
- (session_gc return value for user defined session handlers).
- SimpleXML:
- (SimpleXMLElement could register as implementing Countable).
- (Don't set content of elements with only whitespaces).
- Sockets:
- (Validate length on socket_write).
- (Multicasting may leak memory).
- sodium:
- (sign_detached() strings not terminated).
- (Partially uninitialized buffer returned by sodium_crypto_generichash_init()).
- (password_hash(): Memory cost is not in allowed range).
- SPL:
- (SeekableIterator::seek() should accept 'int' typehint as documented).
- (Segfault when creating instance of ArrayIterator without constructor).
- (Missing addref in SplPriorityQueue EXTR_BOTH mode).
- (Segfault when serializing SplDoublyLinkedList).
- SQLite3:
- Unbundled libsqlite.
- Raised requirements to SQLite 3.7.4.
- Forbid (un)serialization of SQLite3, SQLite3Stmt and SQLite3Result.
- Added support for the SQLite @name notation.
- Added SQLite3Stmt::getSQL() to retrieve the SQL of the statement.
- (Make SQLite3 Online Backup API available).
- Standard:
- Implemented RFC password hashing registry.
- Implemented RFC where password_hash() has argon2i(d) implementations from ext/sodium when PHP is built without libargon.
- (field enclosure behavior in fputcsv).
- (fgetcsv should take empty string as an escape).
- (php_sockop_write() returns 0 on error, can be used to trigger Denial of Service).
- (Bindto IPv6 works with file_get_contents but fails with stream_socket_client).
- (stream_get_line skips data if used with data-generating filter).
- (No way to handle CTRL+C in Windows).
- (stream_copy_to_stream should use mmap more often).
- (Make proc_open accept command array).
- (password_needs_rehash() with an unknown algo should always return true).
- (touch() does not handle dates after 2038 in PHP 64-bit).
- (atime and mtime mismatch).
- (improper memory deallocation on stream_get_contents() with fixed length buffer).
- (strip_tags no longer handling nested php tags).
- (Error in a php_user_filter::filter() is not reported).
- (Stack overflow due to nested serialized input).
- (array_search in $GLOBALS).
- Testing:
- (PCRE bug72463_2 test is sending emails on Linux).
- Tidy:
- Added TIDY_TAG_* constants for HTML5 elements.
- (wrong reflection for tidy_get_head, tidy_get_html, tidy_get_root, and tidy_getopt)
- WDDX:
- Deprecated and unbundled the WDDX extension.
- Zip:
- (addGlob can modify given remove_path value).
Version 7.3.33
- XML:
- (special character is breaking the path in xml function). (CVE-2021-21707)
Version 7.3.32
- FPM:
- (PHP-FPM oob R/W in root process leading to privilege escalation). (CVE-2021-21703)
Version 7.3.31
- Zip:
- (ZipArchive::extractTo extracts outside of destination). (CVE-2021-21706)
Version 7.3.30
- Phar:
- : Symlinks are followed when creating PHAR archive.
Version 7.3.29
- Core:
- : SSRF bypass in FILTER_VALIDATE_URL. (CVE-2021-21705)
- PDO_Firebird:
- : Stack buffer overflow in firebird_info_cb. (CVE-2021-21704)
- : SIGSEGV in firebird_handle_doer. (CVE-2021-21704)
- : SIGSEGV in firebird_stmt_execute. (CVE-2021-21704)
- : Crash while parsing blob data in firebird_fetch_blob. (CVE-2021-21704)
Version 7.3.28
- Imap:
- (imap_mail_compose() header injection).
Version 7.3.27
- SOAP:
- (Null Dereference in SoapClient). (CVE-2021-21702)
Version 7.3.26
- Standard:
- (FILTER_VALIDATE_URL accepts URLs with invalid userinfo). (CVE-2020-7071)
- (stream_get_contents() fails with maxlength=-1 or default).
Version 7.3.25
- Core:
- (ADD_EXTENSION_DEP() fails for ext/standard and ext/date).
- (Windows Deduplication Enabled, randon permission errors).
- COM:
- (com_event_sink crashes on certain arguments).
- DOM:
- (loadHTML() truncates at NUL bytes).
- IMAP:
- (imap_sort() does not return FALSE on failure).
- (segfault on imap_reopen).
- (imap_rfc822_write_address() leaks memory).
- Fixed minor regression caused by fixing bug .
- (imap_mail_compose() segfaults for multipart with rfc822).
- Intl:
- (ext-intl with icu4c 68.1: use of undeclared identifier 'TRUE').
- ODBC:
- (Fetching may rely on uninitialized data).
- SNMP:
- (disable md5 code when it is not supported in net-snmp).
- Standard:
- (parse_url silently drops port number 0).
Version 7.3.24
- Core:
- (copy command is limited to size of file it can copy).
- Calendar:
- (jdtounix() fails after 2037).
- IMAP:
- (imap_mail_compose() segfaults on certain $bodies).
- (imap_mail_compose() may modify by-val parameters).
- (imap_mail_compose() may leak memory).
- (imap_mail_compose() leaks envelope on malformed bodies).
- (imap_mail_compose() does not validate types/encodings).
- (imap_sort() leaks sortpgm memory).
- MySQLnd:
- (mysqlnd.debug doesn't recognize absolute paths with slashes).
- (mysqli_query() fails for ~16 MB long query when compression is enabled).
- ODBC:
- (odbc_specialcolumns() no longer accepts $nullable).
- (BINARY strings may not be properly zero-terminated).
- (Failure to fetch error message).
- (odbc_execute() moves internal pointer of $params).
- (odbc_next_result corrupts prepared resource).
- OPcache:
- (Optimizer pass 6 removes variables used for ibm_db2 data binding).
- PDO_ODBC:
- (NULL Pointer dereference in odbc_handle_preparer).
- Standard:
- (parse_url does not accept URLs with port 0).
- (Inconsistent stream_wrapper_restore() errors).
- (Incorrect message in fopen on invalid mode).
- Tidy:
- (tidyNode::isHtml() is completely broken).
Version 7.3.23
- Core:
- (Bug has not been fixed for Windows).
- (Memleak when coercing integers to string via variadic argument).
- (PHP parses encoded cookie names so malicious `__Host-` cookies can be sent). (CVE-2020-7070)
- Calendar:
- (Potential type confusion in unixtojd() parameter parsing).
- COM:
- (COM obj parameters passed by reference are not updated).
- OPcache:
- (calc free space for new interned string is wrong).
- (opcache.file_cache causes SIGSEGV when custom opcode handlers changed).
- OpenSSL:
- (Wrong ciphertext/tag in AES-CCM encryption for a 12 bytes IV). (CVE-2020-7069)
- PDO:
- (Terrible performance using $query->fetch on queries with many bind parameters).
- SOAP:
- (SoapClient stumbles over WSDL delivered with "Transfer-Encoding: chunked").
- Standard:
- (str_ireplace bug with diacritics characters).
- (getmxrr test bug).
- (Modifying bucket->data by-ref has no effect any longer).
- (Omitting the port in bindto setting errors).
Version 7.3.22
- Core:
- (PHP_CONFIG_FILE_PATH is meaningless).
- (File extensions are case-sensitive).
- (realpath() erroneously resolves link to link).
- (PHP_CHECK_GCC_ARG does not allow flags with equal sign).
- (Stack use-after-scope in define()).
- (CRLF-only line in heredoc causes parsing error).
- COM:
- (com_load_typelib holds reference, fails on second call).
- Exif:
- (Many errors from exif_read_data).
- Gettext:
- (Tests fail due to relying on Linux fallback behavior for gettext()).
- LDAP:
- OPcache:
- (php failed with error after temp folder cleaned up).
- PDO:
- (errorInfo property of PDOException is null when PDO::__construct() fails).
- Standard:
- (array_merge_recursive() crashes when called with array with single reference).
- (getmxrr always returns true on Alpine linux).
- (Memory leak in str_replace of empty string).
- XML:
- (Crash after multiple calls to xml_parser_free()).
Version 7.3.21
- Apache:
- (Upgrade apache2handler's php_apache_sapi_get_request_time to return usec).
- Core:
- (getimagesize function silently truncates after a null byte).
- (Assertion failure if dumping closure with unresolved static variable).
- (HT iterators not removed if empty array is destroyed).
- COM:
- (BSTR to PHP string conversion not binary safe).
- (DCOM does not work with Username, Password parameter).
- Curl:
- (curl_setopt CURLOPT_POSTFIELDS asserts on object with declared properties).
- Fileinfo:
- (finfo_file crash (FILEINFO_MIME)).
- FTP:
- (ftp_size on large files).
- Mbstring:
- (mb_strimwidth does not trim string).
- Phar:
- (Use of freed hash key in the phar_parse_zipfile function). (CVE-2020-7068)
- Standard:
- (Can't copy() large 'data://' with open_basedir).
- (str_replace() does not handle INDIRECT elements).
- (dns_check_record() always return true on Alpine).
Version 7.3.20
- Core:
- (php-win.exe 100% cpu lockup).
- (get_defined_functions(true) may miss functions).
- Fixed possibly unsupported timercmp() usage.
- Exif:
- (Sony picture - PHP Warning - Make, Model, MakerNotes).
- Filter:
- (Invalid memory access in php_filter_strip).
- GD:
- (imagescale adds black border with IMG_BICUBIC).
- OpenSSL:
- (default_socket_timeout=-1 causes connection to timeout).
- PDO SQLite:
- (PDOStatement::getColumnMeta fails on empty result set).
- SPL:
- (Reproducible segfault in error_handler during GC involved an SplFileObject).
- Standard:
- (segfault with streams and invalid data).
Version 7.3.19
- Core:
- (Private SHM is not private on Windows).
- (.user.ini does not inherit).
- GD:
- (Wrong GIF header written in GD GIFEncode).
- MySQLnd:
- (MySQL FLOAT truncates to int some locales).
- Opcache:
- (PHP crashes with specific opcache.optimization_level).
- (Boolean opcache settings ignore on/off values).
- Standard:
- (dns_get_record() fails with DNS_ALL).
Version 7.3.18
- Core:
- (Long filenames cause OOM and temp files are not cleaned). (CVE-2019-11048)
- (Long variables in multipart/form-data cause OOM and temp files are not cleaned). (CVE-2019-11048)
- (PHP 7.3 and PHP-7.4 crash with NULL-pointer dereference on !CS constant).
- (casting object into array creates references).
- (PHP incompatible with 3rd party file system on demand).
- (Unable to interact with files inside a VFS for Git repository).
- DOM:
- (DOMNode::normalize() doesn't remove empty text nodes).
- FCGI:
- (Search for .user.ini extends up to root dir).
- MBString:
- (Segfault in mb_chr() if internal encoding is unsupported).
- OpenSSL:
- (stream_socket_client() throws an unknown error sometimes with <1s timeout).
- Phar:
- (Memory leak on duplicate metadata).
- SimpleXML:
- (Different object of the same xml between 7.4.5 and 7.4.4).
- Standard:
- (SIGSEGV when closing stream handle with a stream filter appended).
Version 7.3.17
- Core:
- (When copy empty array, next key is unspecified).
- (Invalid pointer address).
- CURL:
- (curl_copy_handle() memory leak).
- Date:
- (DateTime hour incorrect during DST jump forward).
- Iconv:
- (Some iconv functions cut Windows-1258).
- OPcache:
- (Opcache chokes and uses 100% CPU on specific script).
- Session:
- (session_create_id() fails for active sessions).
- Shmop:
- (Integer Overflow in shmop_open()).
- SimpleXML:
- (SXE properties may lack attributes and content).
- Spl:
- (SplStack::unserialize() behavior).
- (Null coalescing operator failing with SplFixedArray).
- Standard:
- (shell_exec() silently truncates after a null byte).
- (OOB Read in urldecode()). (CVE-2020-7067)
- (system() swallows last chunk if it is exactly 4095 bytes without newline).
- Zip:
- (ZipArchive::open fails on empty file).
- (php_zip_glob uses gl_pathc after call to globfree).
Version 7.3.16
- Core:
- (restore_error_handler does not restore previous errors mask).
- COM:
- (COMPersistHelper::SaveToFile can save to wrong location).
- (COM error constants don't match com_exception codes on x86).
- (Traversing empty VT_ARRAY throws com_exception).
- (com_print_typeinfo prints duplicate variables).
- (php_istreams are never freed).
- (com_print_typeinfo() leaks memory).
- DOM:
- : (Write Access Violation in DomImplementation).
- (DOMDocumentType::$childNodes is NULL).
- Enchant:
- (enchant_dict_suggest() fails on big endian architecture).
- EXIF:
- (Use-of-uninitialized-value in exif). (CVE-2020-7064)
- MBstring:
- (mb_strtolower (UTF-32LE): stack-buffer-overflow at php_unicode_tolower_full). (CVE-2020-7065)
- MySQLi:
- (mysqli reports different client_version).
- PCRE:
- (Memory corruption in preg_replace/preg_replace_callback and unicode).
- PDO_ODBC:
- (PDOStatement::nextRowset() leaks column values).
- Reflection:
- (Property with heredoc default value returns false for getDocComment).
- SQLite3:
- (::columnType() may fail after SQLite3Stmt::reset()).
- Standard:
- (get_headers() silently truncates after a null byte). (CVE-2020-7066)
- (getenv() w/o arguments not showing changes).
- (Improper injection of Host header when using fopen for http requests).
Version 7.3.15
- Core:
- (Memory corruption htmlspecialchars(): charset `*' not supported).
- (cscript can fail to run on some systems).
- (Code 0 is returned on invalid options).
- (Use-after-free when accessing already destructed backtrace arguments).
- CURL:
- (Hypothetical use-after-free in curl_multi_add_handle()).
- Intl:
- (NumberFormatter::format() may detect wrong type).
- Libxml:
- (Error in SoapClient ctor disables DOMDocument::save()).
- MBString:
- (mb_convert_encoding() can modify $from_encoding).
- MySQLnd:
- (mysqlnd may fetch wrong column indexes with MYSQLI_BOTH).
- OpenSSL:
- Phar:
- (Files added to tar with Phar::buildFromIterator have all-access permissions). (CVE-2020-7063)
- (heap-buffer-overflow in phar_extract_file). (CVE-2020-7061)
- (PharFileInfo::decompress not working).
- Reflection:
- (ReflectionClass::isCloneable call reflected class __destruct).
- Session:
- (Null Pointer Dereference in PHP Session Upload Progress). (CVE-2020-7062)
- SPL:
- (heap use after free caused by spl_dllist_it_helper_move_forward).
- Standard:
- (Memory leak when using stream_filter_append).
- Testing:
- (bug45161.phpt takes forever to finish).
- XSL:
- (XSL callbacks with nodes as parameter leak memory).
Version 7.3.14
- Core:
- (Cycle leak when using function result as temporary).
- CURL:
- (Curl timeout error with specific url and post).
- Date:
- (undefined-behavior in php_date.c).
- DBA:
- ([LMDB] MDB_MAP_FULL: Environment mapsize limit reached).
- Fileinfo:
- (locale information change after mime_content_type).
- GD:
- (Artifacts when convoluting image with transparency).
- (gdTransformAffineCopy() may use unitialized values).
- (gdTransformAffineCopy() changes interpolation method).
- Libxml:
- (Use After Free's in XMLReader / XMLWriter).
- Mbstring:
- (global buffer-overflow in `mbfl_filt_conv_big5_wchar`). (CVE-2020-7060)
- OPcache:
- (Warning Opcode handlers are unusable due to ASLR).
- Pcntl:
- (Converting null to string in error message is bad DX).
- PDO_PgSQL:
- (pdo_pgsql config.w32 cannot find libpq-fe.h).
- (pgsqlGetNotify() overlooks dead connection).
- (pdo_pgsql returns dead persistent connection).
- Session:
- (heap use-after-free in session_create_id()).
- Shmop:
- Standard:
- (OOB read in php_strip_tags_ex). (CVE-2020-7059)
- (Using empty additional_headers adding extraneous CRLF).
Version 7.3.13
- Bcmath:
- (Buffer underflow in bc_shift_addsub). (CVE-2019-11046)
- Core:
- (link() silently truncates after a null byte on Windows). (CVE-2019-11044)
- (DirectoryIterator class silently truncates after a null byte). (CVE-2019-11045)
- (mail() may release string with refcount==1 twice). (CVE-2019-11049)
- (Segfault with trait overriding inherited private shadow property).
- (Calling __autoload() with incorrect EG(fake_scope) value).
- (is_file fails to detect file).
- EXIF:
- (Use-after-free in exif parsing under memory sanitizer). (CVE-2019-11050)
- (Heap-buffer-overflow READ in exif) (CVE-2019-11047).
- GD:
- (GD build broken with -D SIGNED_COMPARE_SLOW).
- MBString:
- Upgraded bundled Oniguruma to 6.9.4.
- OPcache:
- Fixed potential ASLR related invalid opline handler issues.
- Fixed $x = (bool)$x; with opcache (should emit undeclared variable notice).
- PCRE:
- (preg_match() may return integer > 1).
- Standard:
- (array_search in $GLOBALS).
- (var_export'ing certain class instances segfaults).
- (imploding $GLOBALS crashes).
- (Integer overflow in pack causes out-of-bound access).
- (strip_tags allows / in tag name => whitelist bypass).
Version 7.3.12
- Core:
- (Memory corruption using Closure::bindTo).
- (Parse errors classified as highest log-level).
- (Segfault if GC triggered while generator stack frame is being destroyed).
- (Closure::fromCallable() doesn't handle [Closure, '__invoke']).
- COM:
- (Appending to a variant array causes segfault).
- Date:
- (\DateInterval incorrectly unserialized).
- (Serialising DatePeriod converts DateTimeImmutable).
- Iconv:
- (Wrong libiconv version displayed).
- OpCache:
- (Incorrectly computed opcache checksum on files with non-ascii characters).
- (OpCache corrupts custom extension result).
- OpenSSL:
- (TLS issues from HTTP request affecting other encrypted connections).
- Reflection:
- (ReflectionClass::ImplementsInterface - inaccurate error message with traits).
- Sockets:
- (Multicasting may leak memory).
Version 7.3.11
- Core:
- (auto_detect_line_endings value not parsed as bool).
- (Out of memory error).
- Exif:
- ('Illegal component' on exif_read_data since PHP7) (Kalle)
- FPM:
- (env_path_info underflow in fpm_main.c can lead to RCE). (CVE-2019-11043)
- (request_terminate_timeout does not take effect after fastcgi_finish_request).
- MBString:
- (Heap buffer overflow (read) in mb_eregi).
- (mb_decode_numericentity: args number inconsistency).
- (mb_check_encoding() no longer supports stringable objects).
- MySQLi:
- (SSL settings aren't respected when persistent connections are used).
- Mysqlnd:
- (Memory leak in pdo when reusing native prepared statements).
- PCRE:
- (calling preg_match() before pcntl_fork() will freeze child process).
- PDO_MySQL:
- (Regression caused by "SP call yields additional empty result set").
- Session:
- (session_gc return value for user defined session handlers).
- Standard:
- (file_get_contents waits twice specified timeout).
- (strtr leaks memory when integer keys are used and the subject string shorter).
- (stream_get_line skips data if used with data-generating filter).
- Zip:
- (addGlob can modify given remove_path value).
Version 7.3.10
- Core:
- (Can't access OneDrive folder).
- (Double release of doc comment on inherited shadow property).
- (Parse error due to heredoc identifier followed by digit).
- (Interactive mode does not support PHP 7.3-style heredoc).
- FastCGI:
- (FastCGI on_accept hook is not called when using named pipes on Windows).
- FPM:
- (fpm log prefix message includes wrong stdout/stderr notation).
- Intl:
- Ensure IDNA2003 rules are used with idn_to_ascii() and idn_to_utf8() when requested.
- MBString:
- (Heap buffer overflow in mb_eregi).
- MySQLnd:
- Fixed connect_attr issues and added the _server_host connection attribute.
- ODBC:
- (odbc_close() closes arbitrary resources).
- PDO_MySQL:
- (SP call yields additional empty result set).
- sodium:
- (Partially uninitialized buffer returned by sodium_crypto_generichash_init()).
Version 7.3.9
- Core:
- (Buffer overflow in zendparse).
- (Cast to object confuses GC, causes crash).
- (Generator incorrectly reports non-releasable $this as GC child).
- Curl:
- (Bad cURL resources returned by curl_multi_info_read()).
- Exif:
- (Exif crash (bus error) due to wrong alignment and invalid cast).
- FPM:
- (Use-after-free in FPM master event handling).
- Iconv:
- (Bus error in configure test for iconv //IGNORE).
- LiteSpeed:
- Updated to LiteSpeed SAPI V7.5 (Fixed clean shutdown).
- MBString:
- (Oniguruma 6.9.3 fixes CVEs). (CVE-2019-13224)
- MySQLnd:
- (MariaDB server version incorrectly detected).
- (Empty row pocket).
- Opcache:
- (Assertion failure in dce_live_ranges() when silencing is used).
- Standard:
- (Bus error from stream_copy_to_stream (file -> SSL stream) with invalid length).
- (atime and mtime mismatch).
- (improper memory deallocation on stream_get_contents() with fixed length buffer).
- (strip_tags no longer handling nested php tags).
Version 7.3.8
- Core:
- Added syslog.filter=raw option.
- (Segfault in built-in webserver).
- Date:
- (discrepency between time and microtime).
- Updated timelib to 2018.02.
- EXIF:
- (heap-buffer-overflow on exif_process_user_comment). (CVE-2019-11042)
- (heap-buffer-overflow on exif_scan_thumbnail). (CVE-2019-11041)
- FTP:
- (FTP with SSL memory leak).
- Libxml:
- (libxml_disable_entity_loader settings is shared between requests (cgi-fcgi)).
- LiteSpeed:
- Updated to LiteSpeed SAPI V7.4.3 (increased response header count limit from 100 to 1000, added crash handler to cleanly shutdown PHP request, added CloudLinux mod_lsapi mode).
- (After "POST data can't be buffered", using php://input makes huge tmp files).
- Openssl:
- (Segmentation fault upon stream_socket_accept of exported socket-to-stream).
- Opcache:
- (Failure to detect smart branch in DFA pass).
- (file cache strips last character of uname hash).
- (Opcache stats for cache hits are capped at 32bit NUM).
- (Invalid result of if-else).
- (opcache_get_configuration doesn't list all directives).
- PCRE:
- (Array cross-border reading in PCRE).
- (PCRE2 version check in configure fails for "##.##-xxx" version strings).
- PDO_Sqlite:
- (SegFault when reuse statement after schema has changed).
- Phar:
- (Potential UAF in Phar RSHUTDOWN).
- Phpdbg:
- (Include unexistent file memory leak).
- SQLite:
- Upgraded to SQLite 3.28.0.
- Standard:
- (touch() does not handle dates after 2038 in PHP 64-bit).
- (password_hash uses weak options for argon2).
Version 7.3.7
- Core:
- (Interface gets skipped if autoloader throws an exception).
- DOM:
- (segfault when accessing properties of DOMDocumentType).
- MySQLi:
- (When mysqli.allow_local_infile = Off, use a meaningful error message).
- (bindParam incorrect processing of bool types).
- MySQLnd:
- (Random segmentation fault in mysqlnd from php-fpm).
- Opcache:
- (Incorrect evaluation of expressions involving partials arrays in SCCP).
- (Path resolution fails if opcache disabled during request).
- OpenSSL:
- (openssl_encrypt_ccm.phpt fails with OpenSSL 1.1.1c).
- phpdbg:
- (SegFault phpdbg + opcache on include file twice).
- Sockets:
- (Socket_select fails when resource array contains references).
- Sodium:
- (segfault when calling sodium_* functions from eval).
- Standard:
- (Extract with EXTR_SKIP should skip $this).
- (preg_match failed).
- Zip:
Version 7.3.6
- cURL:
- (Add missing CURL_VERSION_* constants).
- Date:
- (DatePeriod::__construct() with invalid recurrence count value).
- EXIF:
- (heap-buffer-overflow on php_jpg_get16) (CVE-2019-11040).
- FPM:
- (php-fpm kill -USR2 not working).
- (static.php.net doesn't work anymore).
- GD:
- (imageantialias($image, false); does not work).
- (Uninitialized read in gdImageCreateFromXbm) (CVE-2019-11038).
- Iconv:
- (Out-of-bounds read in iconv.c:_php_iconv_mime_decode() due to integer overflow) (CVE-2019-11039).
- JSON:
- (Use after free with json serializer).
- Opcache:
- Fixed possible crashes, because of inconsistent PCRE cache and opcache SHM reset.
- PDO_MySQL:
- (Wrong meta pdo_type for bigint on LLP64).
- Reflection:
- (Inconsistent reflection of Closure:::__invoke()).
- Session:
- (Wrong warning for session.sid_bits_per_character).
- SOAP:
- (Segmentation fault when constructing SoapClient with WSDL_CACHE_BOTH).
- SPL:
- (SplFileObject::__toString() may return array).
- SQLite:
- (Bypassing open_basedir restrictions via file uris).
- Standard:
- (Warning for array_map mentions wrong type).
- (strip_tags output change since PHP 7.3).
Version 7.3.5
- Core:
- (ArrayIterator stops iterating after offsetSet call).
- CLI:
- (Incorrect Date header format in built-in server).
- EXIF:
- (Heap-buffer-overflow in _estrndup via exif_process_IFD_TAG) (CVE-2019-11036).
- Interbase:
- (Impossibility of creating multiple connections to Interbase with php 7.x).
- Intl:
- (IntlDateFormatter::create fails in strict mode if $locale = null).
- litespeed:
- LiteSpeed SAPI 7.3.1, better process management, new API function litespeed_finish_request().
- LDAP:
- (Core dump when using server controls) (mcmic)
- Mail:
- (Potential heap corruption in TSendMail()).
- mbstring:
- (Implement regex stack limits for mbregex functions).
- MySQLi:
- (Unbuffered queries leak memory - MySQLi / mysqlnd).
- PCRE:
- (preg_match does not ignore \r in regex flags).
- PDO:
- (Disable cloning of PDO handle/connection objects).
- phpdbg:
- (too many open files).
- (phpdbg segfaults on listing some conditional breakpoints).
- (phpdbg build fails when readline is shared).
- Reflection:
- (ReflectionClass::getMethods(null) doesn't work).
- (Different behavior: always calls destructor).
- Standard:
- (Segmentation fault in extract() when overwriting reference with itself).
- (Crash due to null pointer in parse_ini_string with INI_SCANNER_TYPED).
- (Inconsistent substr_compare behaviour with empty haystack).
Version 7.3.4
- Core:
- (Nullptr deref in zend_compile_expr).
- (Segmentation fault on break 2147483648).
- (Anonymous classes can lose their interface information).
- (Stack Overflow caused by circular reference in garbage collection).
- (Wrong value for 'syslog.filter' documented in php.ini).
- Apache2Handler:
- (BOM in sapi/apache2handler/php_functions.c).
- Bcmath:
- (bcpow() implementation related to gcc compiler optimization).
- CLI Server:
- (Incorrect IP set to $_SERVER['REMOTE_ADDR'] on the localhost).
- COM:
- EXIF:
- (Heap-buffer-overflow in php_ifd_get32s). (CVE-2019-11034)
- (Heap-buffer-overflow in exif_iif_add_value). (CVE-2019-11035)
- FPM:
- (FPM fails to build on AIX due to missing WCOREDUMP).
- GD:
- (Writing truecolor images as GIF ignores interlace flag).
- MySQLi:
- (mysqli_fetch_field hangs scripts).
- Opcache:
- (Incorrect pi node insertion for jmpznz with identical successors).
- PCRE:
- (preg_split does not raise an error on invalid UTF-8).
- Phar:
- (Crash on Big_Endian platform).
- phpdbg:
- (phpdbg break cmd aliases listed in help do not match actual aliases).
- sodium:
- (sign_detached() strings not terminated).
- SQLite3:
- Added sqlite3.defensive INI directive.
- Standard:
- (Segmentation fault when using undefined constant in custom wrapper).
- (Crash in extract() when overwriting extracted array).
- (var_export() does not create a parsable value for PHP_INT_MIN).
- (FTP stream wrapper should set the directory as executable).
Version 7.3.3
- Core:
- (Core dump using parse_ini_string with numeric sections).
- (Buffer Overflow via overly long Error Messages).
- (Disabling class causes segfault on member access).
- (Custom extension Segmentation fault when declare static property).
- (PHP crashes when parsing `(2)::class`).
- (iptcembed broken function).
- (rename() across the device may allow unwanted access during processing). (CVE-2019-9637)
- COM:
- (Already defined constants are not properly reported).
- (Persistence confusion in php_com_import_typelib()).
- EXIF:
- (Uninitialized read in exif_process_IFD_in_TIFF). (CVE-2019-9641)
- (Invalid Read on exif_process_SOFn). (CVE-2019-9640)
- (Uninitialized read in exif_process_IFD_in_MAKERNOTE). (CVE-2019-9638)
- (Uninitialized read in exif_process_IFD_in_MAKERNOTE). (CVE-2019-9639)
- Mbstring:
- (mb_ereg_replace() with trailing backslash adds null byte).
- MySQL:
- Disabled LOCAL INFILE by default, can be enabled using php.ini directive mysqli.allow_local_infile for mysqli, or PDO::MYSQL_ATTR_LOCAL_INFILE attribute for pdo_mysql.
- OpenSSL:
- (feof might hang on TLS streams in case of fragmented TLS records).
- PDO_OCI:
- Support Oracle Database tracing attributes ACTION, MODULE, CLIENT_INFO, and CLIENT_IDENTIFIER.
- PHAR:
- (Null Pointer Dereference in phar_create_or_parse_filename).
- (phar_tar_writeheaders_int() buffer overflow).
- phpdbg:
- (phpdbg support for display_errors=stderr).
- SPL:
- (DirectoryIterator glob:// don't support current path relative queries).
- (openFile() silently truncates after a null byte).
- Standard:
- (Unintialized php_stream_statbuf in stat functions).
- (setcookie() sets incorrect SameSite header if all of its options filled).
Version 7.3.2
- Core:
- (memcpy with negative length via crafted DNS response). (CVE-2019-9022)
- (Recursion detection broken when printing GLOBALS).
- ("undefined function" message no longer includes namespace).
- (base64_encode / base64_decode doest not work on nested VM).
- (__callStatic may get incorrect arguments).
- (__DIR__, __FILE__, realpath() reveal physical path for subst virtual drive).
- (Segfault when using 2 RecursiveFilterIterator).
- (PHP 7.3 built with ASAN crashes in zend_cpu_supports_avx2).
- (Zend engine crashes when calling realpath in invalid working dir).
- Curl:
- (Segfault with H2 server push).
- Fileinfo:
- (webm files incorrectly detected as application/octet-stream).
- FPM:
- (php-fpm crashes with Main process exited, code=dumped, status=11/SEGV).
- GD:
- (imagescale(…, IMG_BILINEAR_FIXED) can cause black border).
- (gdImageFilledArc() doesn't properly draw pies).
- (imagescale() may return image resource on failure).
- (1bpp BMPs may fail to be loaded).
- (imagewbmp() segfaults with very large images).
- ldap:
- (ldap_bind using ldaps or ldap_start_tls()=exception in libcrypto-1_1-x64.dll).
- Mbstring:
- (mb_ereg_replace() doesn't replace a substitution variable).
- (mb_scrub() silently truncates after a null byte).
- MySQLnd:
- (Unbuffered queries memory leak).
- (In mysqlnd_ext_plugin.h the plugin methods family has no external visibility).
- Opcache:
- (Assertion failed in dce_live_ranges).
- (value of variable assigned in a switch() construct gets lost).
- (php-fpm workers are segfaulting in zend_gc_addre).
- (configure fails on 64-bit AIX when opcache enabled).
- (Opcache literal compaction is incompatible with EXT opcodes).
- PCRE:
- (get_browser with empty string).
- PDO:
- (array_walk_recursive corrupts value types leading to PDO failure).
- PDO MySQL:
- (PDO MySQL segfaults with persistent connection).
- SOAP:
- (Segmentation Fault when executing method with an empty parameter).
- Sockets:
- (socket_recvfrom may return an invalid 'from' address on MacOS).
- SPL:
- (segfault occurs when add property to unserialized empty ArrayObject).
- Standard:
- (segfault about array_multisort).
- (parse_str segfaults when inserting item into existing array).
Version 7.3.1
- Core:
- (Build failure on Mac OS X on 32-bit Intel).
- (zend_signal_startup() needs ZEND_API).
- (PHP generates "FE_FREE" opcode on the wrong line).
- (magic methods inherited from a trait may be ignored).
- CURL:
- (curl_getinfo returning microseconds, not seconds).
- COM:
- (Serializing or unserializing COM objects crashes).
- Exif:
- (Unsigned rational numbers are written out as signed rationals).
- GD:
- (Incorrect error handling of imagecreatefromjpeg()).
- (auto cropping has insufficient precision).
- (imagecropauto(…, GD_CROP_SIDES) crops left but not right).
- (efree() on uninitialized Heap data in imagescale leads to use-after-free). (CVE-2016-10166)
- (imagecolormatch Out Of Bounds Write on Heap). (CVE-2019-6977)
- MBString:
- (Negative size parameter in mb_split). (CVE-2019-9025)
- (Buffer overflow on mb regex functions - fetch_token). (CVE-2019-9023)
- (heap buffer overflow in mb regex functions - compile_string_node). (CVE-2019-9023)
- (heap buffer overflow in multibyte match_at). (CVE-2019-9023)
- (heap buffer overflow due to incorrect length in expand_case_fold_string). (CVE-2019-9023)
- (buffer overflow in fetch_token). (CVE-2019-9023)
- (Buffer overflow in multibyte case folding - unicode). (CVE-2019-9023)
- (Heap overflow in utf32be_mbc_to_code). (CVE-2019-9023)
- OCI8:
- (oci_pconnect with OCI_CRED_EXT not working).
- Added oci_set_call_timeout() for call timeouts.
- Added oci_set_db_operation() for the DBOP end-to-end-tracing attribute.
- Opcache:
- (CFG assertion failure on multiple finalizing switch frees in one block).
- (OPcache optimization problem for ArrayAccess->offsetGet).
- PCRE:
- (Infinite loop in preg_replace_callback).
- PDO:
- Handle invalid index passed to PDOStatement::fetchColumn() as error.
- Phar:
- (heap buffer overflow in phar_detect_phar_fname_ext). (CVE-2019-9021)
- Soap:
- (Segfault when using SoapClient with null options).
- Sockets:
- (Unsupported IPV6_RECVPKTINFO constants on macOS).
- Sodium:
- (SodiumException segfaults on PHP 7.3).
- SPL:
- (spl_autoload causes segfault).
- (class_uses causes segfault).
- SQLite3:
- (Issue with re-binding on SQLite3).
- Xmlrpc:
- (heap out of bounds read in xmlrpc_decode()). (CVE-2019-9020)
- (Global out of bounds read in xmlrpc base64 code). (CVE-2019-9024)
Version 7.3.0
- Core:
- Improved PHP GC.
- Redesigned the old ext_skel program written in PHP, run: 'php ext_skel.php' for all options. This means there are no dependencies, thus making it work on Windows out of the box.
- Removed support for BeOS.
- Add PHP_VERSION to phpinfo() <title/>.
- Add net_get_interfaces().
- Implemented flexible heredoc and nowdoc syntax, per RFC https://wiki.php.net/rfc/flexible_heredoc_nowdoc_syntaxes.
- Added support for references in list() and array destructuring, per RFC https://wiki.php.net/rfc/list_reference_assignment.
- Improved effectiveness of ZEND_SECURE_ZERO for NetBSD and systems without native similar feature.
- Added syslog.facility and syslog.ident INI entries for customizing syslog logging.
- (Memory leak in zend_register_functions() in ZTS mode).
- (support append mode in temp/memory streams).
- (Uncaught exceptions not being formatted properly when error_log set to "syslog").
- (Segfault when calling is_callable on parent).
- (broken links and unused config items in distributed ini files).
- (Composed class has fatal error with duplicate, equal const properties).
- (identical trait methods raise errors during composition).
- (Clang ignores fastcall calling convention on variadic function).
- (Remove inconsitency of internal exceptions and user defined exceptions).
- (Mathematical operations convert objects to integers).
- (Internal class cast handler uses integer instead of float).
- (Fatal error instead of Error exception when base class is not found).
- (Wording: "iterable" is not a scalar type).
- (config.guess/config.sub do not recognize RISC-V).
- (Segfault in zend_objects_store_put).
- (ftruncate fails on files > 2GB).
- (Inherited static properties can be desynchronized from their parent by ref).
- (Changed behaviour in unclosed HereDoc).
- (Constant numeric strings become integers when used as ArrayAccess offset).
- (Some nullary functions don't check the number of arguments).
- (Error relocating sapi/cli/php: unsupported relocation type 37).
- The declaration and use of case-insensitive constants has been deprecated.
- Added syslog.filter INI entry for syslog filtering.
- (Segfault with divide-assign op and __get + __set).
- (RE2C_FLAGS rarely honoured) (Cristian Rodríguez)
- Fixed broken zend_read_static_property (Laruence)
- (Traits used on the parent are ignored for child classes).
- (‘asm’ operand has impossible constraints in zend_operators.h).
- (Crash in ZEND_COALESCE_SPEC_TMP_HANDLER - assertion in _get_zval_ptr_tmp failed).
- (Z_COPYABLE invalid definition).
- (file_exists() stopped working for phar://).
- (Incorrect bypassing protected method accessibilty check).
- (Undefined class used by class constant in constexpr generates fatal error).
- (file_put_contents() blocks the directory of the file (__DIR__)).
- (define() error message does not mention resources as valid values).
- (Undefined symbols ___cpuid_count).
- (undefined symbol zend_string_equal_val in C++ build).
- (Segfault when using convert.quoted-printable-encode filter).
- BCMath:
- (No way to get current scale in use).
- (BCMath bcmul ignores scale parameter).
- (split_bc_num() is pointless).
- (BCMath errors/warnings bypass PHP's error handling).
- CLI:
- (Output after stdout/stderr closed cause immediate exit with status 0).
- (php-win.exe corrupts unicode symbols from cli parameters).
- cURL:
- Expose curl constants from curl 7.50 to 7.61.
- (Fixed finding CURL on systems with multiarch support).
- Date:
- : Add DateTime::createFromImmutable() method.
- (DateInterval microseconds property always 0).
- (calling var_dump on a DateTimeZone object modifies it).
- (mismatch arginfo for date_create).
- Updated timelib to 2018.01RC1 to address several bugs:
- (DateTime::createFromFormat does not accept 'v' format specifier).
- (Wrap around behaviour for microseconds is not working).
- (DateTime::diff gives wrong diff when the actual diff is less than 1 second).
- DBA:
- (compiler warnings emitted).
- DOM:
- (DOMDocument::formatOutput attribute sometimes ignored).
- Fileinfo:
- (slowness regression in 7.2/7.3 (compared to 7.1)).
- Filter:
- Added the 'add_slashes' sanitization mode (FILTER_SANITIZE_ADD_SLASHES).
- FPM:
- Added fpm_get_status function.
- (getallheaders() missing with PHP-FPM).
- (Long messages into stdout/stderr are truncated incorrectly) - added new log related FPM configuration options: log_limit, log_buffering and decorate_workers_output.
- ftp:
- (ftp_close(): SSL_read on shutdown).
- GD:
- Added support for WebP in imagecreatefromstring().
- GMP:
- Export internal structures and accessor helpers for GMP object.
- Added gmp_binomial(n, k).
- Added gmp_lcm(a, b).
- Added gmp_perfect_power(a).
- Added gmp_kronecker(a, b).
- iconv:
- (iconv_mime_encode() fails to Q-encode UTF-8 string).
- (Fixing 60494 ignored ICONV_MIME_DECODE_CONTINUE_ON_ERROR).
- IMAP:
- (imap_open allows to run arbitrary shell commands via mailbox parameter). (CVE-2018-19518)
- (null pointer dereference in imap_mail).
- Interbase:
- (Incorrect reflection for ibase_[p]connect).
- (php+php_interbase.dll crash on module_shutdown).
- intl:
- (UConverter::setDestinationEncoding changes source instead of destination).
- (Incorrect validation of domain on idn_to_utf8() function).
- JSON:
- Added JSON_THROW_ON_ERROR flag.
- LDAP:
- Added ldap_exop_refresh helper for EXOP REFRESH operation with dds overlay.
- Added full support for sending and parsing ldap controls.
- (Fix LDAP path lookup on 64-bit distros).
- libxml2:
- (use pkg-config where available).
- litespeed:
- (Binary directory doesn't get created when building only litespeed SAPI).
- (Missing program prefix and suffix).
- MBstring:
- Updated to Oniguruma 6.9.0.
- (mb title case conversion-first word in quotation isn't capitalized).
- (MB_CASE_TITLE misbehaves with curled apostrophe/quote).
- (Crash in zif_mb_send_mail).
- (mbstring functions version 7.1.1 are slow compared to 5.3 on Windows).
- (mb_strtolower with invalid UTF-8 causes segmentation fault).
- (use of undeclared identifiers INT_MAX and LONG_MAX).
- (Bus Error due to unaligned access in zend_ini.c OnUpdateLong).
- (mbstring.http_output_conv_mimetypes is ignored).
- (Broken UTF7-IMAP conversion).
- (mb_strpos throws Unknown encoding or conversion error).
- (mb_check_encoding crashes when argument given an empty array).
- Mysqlnd:
- (Prepared Statement formatter truncates fractional seconds from date/time column).
- ODBC:
- Removed support for ODBCRouter.
- Removed support for Birdstep.
- (odbc_fetch_object has incorrect type signature).
- Opcache:
- (Loop variable confusion).
- (var has array key type but not value type).
- (zend_variables.c:73: zend_string_destroy: Assertion `!(zval_gc_flags((str)->gc)).
- (OPcache enabled triggers false-positive "Illegal string offset").
- (Type inference in opcache causes side effects).
- (array_diff_key() - segmentation fault).
- OpenSSL:
- Added openssl_pkey_derive function.
- Add min_proto_version and max_proto_version ssl stream options as well as related constants for possible TLS protocol values.
- PCRE:
- Implemented https://wiki.php.net/rfc/pcre2-migration.
- Upgrade PCRE2 to 10.32.
- (preg_quote() does not quote # control character).
- (\w no longer includes unicode characters).
- (Regression in preg_match makes it fail with PREG_JIT_STACKLIMIT_ERROR).
- (preg_match difference between 7.3 and < 7.3).
- PDO_DBlib:
- (allow 0-column rowsets to be skipped automatically).
- Expose TDS version as \PDO::DBLIB_ATTR_TDS_VERSION attribute on \PDO instance.
- Treat DATETIME2 columns like DATETIME.
- (allow locales.conf to drive datetime format).
- PDO_Firebird:
- (PDO_Firebird returns only NULLs for results with boolean for FIREBIRD >= 3.0).
- PDO_OCI:
- (PDO_PCO with PHP-FPM: OCI environment initialized before PHP-FPM sets it up).
- PDO SQLite:
- Add support for additional open flags
- pgsql:
- Added new error constants for pg_result_error(): PGSQL_DIAG_SCHEMA_NAME, PGSQL_DIAG_TABLE_NAME, PGSQL_DIAG_COLUMN_NAME, PGSQL_DIAG_DATATYPE_NAME, PGSQL_DIAG_CONSTRAINT_NAME and PGSQL_DIAG_SEVERITY_NONLOCALIZED.
- (pg_convert has a broken regex for the 'TIME WITHOUT TIMEZONE' data type).
- phar:
- (include_path has a 4096 char limit in some cases).
- (deal with leading slash when adding files correctly).
- (PharData always creates new files with mode 0666).
- (Heap Buffer Overflow (READ: 4) in phar_parse_pharfile). (CVE-2018-20783)
- readline:
- Added completion_append_character and completion_suppress_append options to readline_info() if linked against libreadline.
- Session:
- (session fails to start after having headers sent).
- SimpleXML:
- (SimpleXML casts integers wrong).
- (Assignment of empty string creates extraneous text node).
- Sockets:
- (Validate length on socket_write).
- SOAP:
- (Wrong reflection on SoapClient::__setSoapHeaders).
- (SoapClient generates E_ERROR even if exceptions=1 is used).
- (SoapClient can't handle object references correctly).
- (WSDL_CACHE_MEMORY causes Segmentation fault).
- (Signedness issue in SOAP when precision=-1).
- SPL:
- (Appending AppendIterator leads to segfault).
- (incorrect behavior of AppendIterator::append in foreach loop).
- (autoloading file with syntax error uses next autoloader, may hide parse error).
- (RecursiveTreeIterator::setPostfix has wrong signature).
- (strange behavior of AppendIterator).
- (mismatch arginfo for splarray constructor).
- SQLite3:
- Updated bundled libsqlite to 3.24.0.
- Standard:
- Added is_countable() function.
- Added support for the SameSite cookie directive, including an alternative signature for setcookie(), setrawcookie() and session_set_cookie_params().
- Remove superfluous warnings from inet_ntop()/inet_pton().
- (DNS_CAA record results contain garbage).
- Fixed unserialize(), to disable creation of unsupported data structures through manually crafted strings.
- (accept EFAULT in addition to ENOSYS as indicator that getrandom() is missing).
- (fopen() should accept NULL as context).
- (path/domain are not sanitized in setcookie).
- (incorrect url in header for mt_rand).
- Added hrtime() function, to get high resolution time.
- (stdClass::__setState is not defined although var_export() uses it).
- (stream_socket_get_name should enclose IPv6 in brackets).
- (Disallow excessive parameters after options array).
- (Segmentation fault caused by property corruption).
- (setcookie does not accept "double" type for expire time).
- (improve array_* failure messages exposing what was passed instead of an array).
- (ftruncate changes file pointer).
- (Memory corruption and segfault).
- (ftruncate() changes seek pointer in c mode).
- Testing:
- (Make run-tests.php support --CGI-- sections).
- Tidy:
- Support using tidyp instead of tidy.
- (Tidy has incorrect ReflectionFunction param counts for functions taking tidy).
- Fixed arginfo for tidy::__construct().
- Tokenizer:
- (token_get_all with TOKEN_PARSE flag fails to recognise close tag).
- (Change remaining uncatchable fatal errors for parsing into ParseError).
- (token_get_all with TOKEN_PARSE flag fails to recognise close tag with newline).
- (Incorrect tokenization of multiple invalid flexible heredoc strings).
- XML:
- (External entity processing never fails).
- Zlib:
- Added zlib/level context option for compress.zlib wrapper.
Version 7.2.34
- Core:
- (PHP parses encoded cookie names so malicious `__Host-` cookies can be sent). (CVE-2020-7070)
- OpenSSL:
- (Wrong ciphertext/tag in AES-CCM encryption for a 12 bytes IV). (CVE-2020-7069)
Version 7.2.33
- Core:
- (getimagesize function silently truncates after a null byte) (cmb)
- Phar:
- (Use of freed hash key in the phar_parse_zipfile function). (CVE-2020-7068)
Version 7.2.32
- Windows:
- Rebuild of official Windows binaries with patched libcurl. No PHP source changes.
Version 7.2.31
- Core:
- (Long filenames cause OOM and temp files are not cleaned). (CVE-2019-11048)
- (Long variables in multipart/form-data cause OOM and temp files are not cleaned). (CVE-2019-11048)
Version 7.2.30
- Standard:
- (SIGSEGV when closing stream handle with a stream filter appended).
- (shell_exec() silently truncates after a null byte).
- (OOB Read in urldecode()).
Version 7.2.29
- Core:
- (get_headers() silently truncates after a null byte) (CVE-2020-7066) (cmb)
- EXIF:
- (Use-of-uninitialized-value in exif) (CVE-2020-7064) (Nikita)
Version 7.2.28
- DOM:
- : (Write Access Violation in DomImplementation).
- Phar:
- (Files added to tar with Phar::buildFromIterator have all-access permissions). (CVE-2020-7063)
- Session:
- (Null Pointer Dereference in PHP Session Upload Progress). (CVE-2020-7062)
Version 7.2.27
- Mbstring:
- (global buffer-overflow in `mbfl_filt_conv_big5_wchar`). (CVE-2020-7060)
- Session:
- (heap use-after-free in session_create_id()).
- Standard:
- (OOB read in php_strip_tags_ex). (CVE-2020-7059)
Version 7.2.26
- Bcmath:
- (Buffer underflow in bc_shift_addsub). (CVE-2019-11046)
- Core:
- (link() silently truncates after a null byte on Windows). (CVE-2019-11044)
- (DirectoryIterator class silently truncates after a null byte). (CVE-2019-11045)
- EXIF:
- (Use-after-free in exif parsing under memory sanitizer). (CVE-2019-11050)
- (Heap-buffer-overflow READ in exif). (CVE-2019-11047)
- GD:
- (GD build broken with -D SIGNED_COMPARE_SLOW).
- Intl:
- (Segmentation fault in Locale::filterMatches).
- OPcache:
- Fixed $x = (bool)$x; with opcache (should emit undeclared variable notice).
- Standard:
- (array_search in $GLOBALS).
- (Integer overflow in pack causes out-of-bound access).
- (strip_tags allows / in tag name => whitelist bypass).
Version 7.2.25
- Core:
- (Parse errors classified as highest log-level).
- (Segfault if GC triggered while generator stack frame is being destroyed).
- (Closure::fromCallable() doesn't handle [Closure, '__invoke']).
- COM:
- (Appending to a variant array causes segfault).
- Date:
- (\DateInterval incorrectly unserialized).
- (Serialising DatePeriod converts DateTimeImmutable).
- Iconv:
- (Wrong libiconv version displayed). (gedas at martynas, cmb).
- OpCache:
- (Incorrectly computed opcache checksum on files with non-ascii characters).
- (OpCache corrupts custom extension result).
- OpenSSL:
- (TLS issues from HTTP request affecting other encrypted connections).
- Reflection:
- (ReflectionClass::ImplementsInterface - inaccurate error message with traits).
- Sockets:
- (Multicasting may leak memory).
Version 7.2.24
- Core:
- (auto_detect_line_endings value not parsed as bool).
- (Out of memory error).
- Exif:
- ('Illegal component' on exif_read_data since PHP7) (Kalle)
- FPM:
- (env_path_info underflow in fpm_main.c can lead to RCE). (CVE-2019-11043)
- MBString:
- (mb_decode_numericentity: args number inconsistency).
- (mb_check_encoding() no longer supports stringable objects).
- MySQLi:
- (SSL settings aren't respected when persistent connections are used).
- PDO_MySQL:
- (Regression caused by "SP call yields additional empty result set").
- Session:
- (session_gc return value for user defined session handlers).
- Standard:
- (file_get_contents waits twice specified timeout).
- (strtr leaks memory when integer keys are used and the subject string shorter).
- (stream_get_line skips data if used with data-generating filter).
- Zip:
- (addGlob can modify given remove_path value).
Version 7.2.23
- Core:
- (Can't access OneDrive folder).
- (Generator incorrectly reports non-releasable $this as GC child).
- FastCGI:
- (FastCGI on_accept hook is not called when using named pipes on Windows).
- MySQLnd:
- Fixed connect_attr issues and added the _server_host connection attribute.
- ODBC:
- (odbc_close() closes arbitrary resources).
- PDO_MySQL:
- (SP call yields additional empty result set).
- sodium:
- (Partially uninitialized buffer returned by sodium_crypto_generichash_init()).
- SPL:
- (SplObject isCloneable() returns true but errs on clone).
Version 7.2.22
- Core:
- (Buffer overflow in zendparse).
- (Cast to object confuses GC, causes crash).
- Curl:
- (Bad cURL resources returned by curl_multi_info_read()).
- Exif:
- (Exif crash (bus error) due to wrong alignment and invalid cast).
- Iconv:
- (Bus error in configure test for iconv //IGNORE).
- LiteSpeed:
- Updated to LiteSpeed SAPI V7.5 (Fixed clean shutdown).
- MySQLnd:
- (MariaDB server version incorrectly detected).
- Opcache:
- (Assertion failure in dce_live_ranges() when silencing is used).
- Standard:
- (Bus error from stream_copy_to_stream (file -> SSL stream) with invalid length).
- (atime and mtime mismatch).
- (improper memory deallocation on stream_get_contents() with fixed length buffer).
Version 7.2.21
- Date:
- (discrepency between time and microtime).
- EXIF:
- (heap-buffer-overflow on exif_process_user_comment). (CVE-2019-11042)
- (heap-buffer-overflow on exif_scan_thumbnail). (CVE-2019-11041)
- Fileinfo:
- (finfo_file shows wrong mime-type for .tga file).
- FTP:
- (FTP with SSL memory leak).
- Libxml:
- (libxml_disable_entity_loader settings is shared between requests (cgi-fcgi)).
- LiteSpeed:
- Updated to LiteSpeed SAPI V7.4.3 (increased response header count limit from 100 to 1000, added crash handler to cleanly shutdown PHP request, added CloudLinux mod_lsapi mode).
- (After "POST data can't be buffered", using php://input makes huge tmp files).
- Openssl:
- (Segmentation fault upon stream_socket_accept of exported socket-to-stream).
- OPcache:
- (file cache strips last character of uname hash).
- (Opcache stats for cache hits are capped at 32bit NUM).
- (opcache_get_configuration doesn't list all directives).
- Phar:
- (Potential UAF in Phar RSHUTDOWN).
- Phpdbg:
- (Include unexistent file memory leak).
- PDO_Sqlite:
- (SegFault when reuse statement after schema has changed).
- SQLite:
- Upgraded to SQLite 3.28.0.
- Standard:
- (touch() does not handle dates after 2038 in PHP 64-bit).
- (password_hash uses weak options for argon2).
- XMLRPC:
- (XML-RPC mutates immutable objects during encoding).
Version 7.2.20
- Core:
- (Interface gets skipped if autoloader throws an exception).
- DOM:
- (segfault when accessing properties of DOMDocumentType).
- MySQLi:
- (When mysqli.allow_local_infile = Off, use a meaningful error message).
- (bindParam incorrect processing of bool types).
- Opcache:
- (Path resolution fails if opcache disabled during request).
- OpenSSL:
- (openssl_encrypt_ccm.phpt fails with OpenSSL 1.1.1c).
- Sockets:
- (Socket_select fails when resource array contains references).
- Standard:
- (Extract with EXTR_SKIP should skip $this).
- (preg_match failed).
- Zip:
Version 7.2.19
- Date:
- (DatePeriod::__construct() with invalid recurrence count value).
- EXIF:
- (heap-buffer-overflow on php_jpg_get16) (CVE-2019-11040).
- FPM:
- (php-fpm kill -USR2 not working).
- (static.php.net doesn't work anymore).
- GD:
- (imageantialias($image, false); does not work).
- (Uninitialized read in gdImageCreateFromXbm) (CVE-2019-11038).
- Iconv:
- (Out-of-bounds read in iconv.c:_php_iconv_mime_decode() due to integer overflow) (CVE-2019-11039).
- JSON:
- (Use after free with json serializer).
- Opcache:
- Fixed possible crashes, because of inconsistent PCRE cache and opcache SHM reset.
- PDO_MySQL:
- (Wrong meta pdo_type for bigint on LLP64).
- Reflection:
- (Inconsistent reflection of Closure:::__invoke()).
- Session:
- (Wrong warning for session.sid_bits_per_character).
- SPL:
- (SplFileObject::__toString() may return array).
- SQLite:
- (Bypassing open_basedir restrictions via file uris).
Version 7.2.18
- CLI:
- (Incorrect Date header format in built-in server).
- EXIF:
- (Heap-buffer-overflow in _estrndup via exif_process_IFD_TAG) (CVE-2019-11036).
- Interbase:
- (Impossibility of creating multiple connections to Interbase with php 7.x).
- Intl:
- (IntlDateFormatter::create fails in strict mode if $locale = null).
- litespeed:
- LiteSpeed SAPI 7.3.1, better process management, new API function litespeed_finish_request().
- Mail:
- (Potential heap corruption in TSendMail()).
- PCRE:
- (preg_match does not ignore \r in regex flags).
- PDO:
- (Disable cloning of PDO handle/connection objects).
- phpdbg:
- (too many open files).
- (phpdbg segfaults on listing some conditional breakpoints).
- (phpdbg build fails when readline is shared).
- Reflection:
- (ReflectionClass::getMethods(null) doesn't work).
- (Different behavior: always calls destructor).
- Standard:
- (recursive mkdir on ftp stream wrapper is incorrect).
- (Crash due to null pointer in parse_ini_string with INI_SCANNER_TYPED).
- (Inconsistent substr_compare behaviour with empty haystack).
Version 7.2.17
- Core:
- (Nullptr deref in zend_compile_expr).
- (Segmentation fault on break 2147483648).
- (Anonymous classes can lose their interface information).
- (Unable to run tests when building shared extension on AIX).
- Bcmath:
- (bcpow() implementation related to gcc compiler optimization).
- COM:
- Date:
- (DateInterval:createDateFromString() silently fails).
- (Added DatePeriod::getRecurrences() method).
- EXIF:
- (Heap-buffer-overflow in php_ifd_get32s). (CVE-2019-11034)
- (Heap-buffer-overflow in exif_iif_add_value). (CVE-2019-11035)
- FPM:
- (FPM fails to build on AIX due to missing WCOREDUMP).
- GD:
- (Writing truecolor images as GIF ignores interlace flag).
- MySQLi:
- (mysqli_fetch_field hangs scripts).
- Opcache:
- (Opcache passes wrong value for inline array push assignments).
- (Incorrect pi node insertion for jmpznz with identical successors).
- phpdbg:
- (phpdbg break cmd aliases listed in help do not match actual aliases).
- sodium:
- (sign_detached() strings not terminated).
- SQLite3:
- Added sqlite3.defensive INI directive.
- Standard:
- (Segmentation fault when using undefined constant in custom wrapper).
- (Crash in extract() when overwriting extracted array).
- (var_export() does not create a parsable value for PHP_INT_MIN).
- (FTP stream wrapper should set the directory as executable).
Version 7.2.16
- Core:
- (Core dump using parse_ini_string with numeric sections).
- (rename() across the device may allow unwanted access during processing). (CVE-2019-9637)
- COM:
- (Already defined constants are not properly reported).
- EXIF:
- (Uninitialized read in exif_process_IFD_in_TIFF). (CVE-2019-9641)
- (Invalid Read on exif_process_SOFn). (CVE-2019-9640)
- (Uninitialized read in exif_process_IFD_in_MAKERNOTE). (CVE-2019-9638)
- (Uninitialized read in exif_process_IFD_in_MAKERNOTE). (CVE-2019-9639)
- PDO_OCI:
- Support Oracle Database tracing attributes ACTION, MODULE, CLIENT_INFO, and CLIENT_IDENTIFIER.
- PHAR:
- (Null Pointer Dereference in phar_create_or_parse_filename).
- SPL:
- (DirectoryIterator glob:// don't support current path relative queries).
- (openFile() silently truncates after a null byte).
- Standard:
- (Unintialized php_stream_statbuf in stat functions).
- MySQL:
- Disabled LOCAL INFILE by default, can be enabled using php.ini directive mysqli.allow_local_infile for mysqli, or PDO::MYSQL_ATTR_LOCAL_INFILE attribute for pdo_mysql.
Version 7.2.15
- Core:
- (__callStatic may get incorrect arguments).
- (Disabling class causes segfault on member access).
- (PHP crashes when parsing `(2)::class`).
- Curl:
- (Segfault with H2 server push).
- GD:
- (imagescale(…, IMG_BILINEAR_FIXED) can cause black border).
- (gdImageFilledArc() doesn't properly draw pies).
- (imagescale() may return image resource on failure).
- (1bpp BMPs may fail to be loaded).
- (imagewbmp() segfaults with very large images).
- ldap:
- (ldap_bind using ldaps or ldap_start_tls()=exception in libcrypto-1_1-x64.dll).
- Mbstring:
- (mb_scrub() silently truncates after a null byte).
- MySQLnd:
- (In mysqlnd_ext_plugin.h the plugin methods family has no external visibility).
- Opcache:
- (configure fails on 64-bit AIX when opcache enabled).
- OpenSSL:
- (feof might hang on TLS streams in case of fragmented TLS records).
- PDO:
- (array_walk_recursive corrupts value types leading to PDO failure).
- Sockets:
- (socket_recvfrom may return an invalid 'from' address on MacOS).
- Standard:
- (segfault about array_multisort).
- (parse_str segfaults when inserting item into existing array).
Version 7.2.14
- Core:
- (memcpy with negative length via crafted DNS response). (CVE-2019-9022)
- (zend_signal_startup() needs ZEND_API).
- (PHP generates "FE_FREE" opcode on the wrong line).
- COM:
- (Serializing or unserializing COM objects crashes).
- Date:
- (DateTime::diff gives wrong diff when the actual diff is less than 1 second).
- Exif:
- (Unsigned rational numbers are written out as signed rationals).
- GD:
- (efree() on uninitialized Heap data in imagescale leads to use-after-free). (CVE-2016-10166)
- (imagecolormatch Out Of Bounds Write on Heap). (CVE-2019-6977)
- (Incorrect error handling of imagecreatefromjpeg()).
- (auto cropping has insufficient precision).
- (imagecropauto(…, GD_CROP_SIDES) crops left but not right).
- IMAP:
- (null pointer dereference in imap_mail).
- Mbstring:
- (Buffer overflow on mb regex functions - fetch_token). (CVE-2019-9023)
- (heap buffer overflow in mb regex functions - compile_string_node). (CVE-2019-9023)
- (heap buffer overflow in multibyte match_at). (CVE-2019-9023)
- (heap buffer overflow due to incorrect length in expand_case_fold_string). (CVE-2019-9023)
- (buffer overflow in fetch_token). (CVE-2019-9023)
- (Buffer overflow in multibyte case folding - unicode). (CVE-2019-9023)
- (Heap overflow in utf32be_mbc_to_code). (CVE-2019-9023)
- OCI8:
- (oci_pconnect with OCI_CRED_EXT not working).
- Added oci_set_call_timeout() for call timeouts.
- Added oci_set_db_operation() for the DBOP end-to-end-tracing attribute.
- Opcache:
- (CFG assertion failure on multiple finalizing switch frees in one block).
- PDO:
- Handle invalid index passed to PDOStatement::fetchColumn() as error.
- Phar:
- (heap buffer overflow in phar_detect_phar_fname_ext). (CVE-2019-9021)
- Sockets:
- (Unsupported IPV6_RECVPKTINFO constants on macOS).
- SQLite3:
- (Issue with re-binding on SQLite3).
- Xmlrpc:
- (heap out of bounds read in xmlrpc_decode()). (CVE-2019-9020)
- (Global out of bounds read in xmlrpc base64 code). (CVE-2019-9024)
Version 7.2.13
- ftp:
- (ftp_close(): SSL_read on shutdown).
- CLI:
- (php-win.exe corrupts unicode symbols from cli parameters).
- Fileinfo:
- (slowness regression in 7.2/7.3 (compared to 7.1)).
- iconv:
- (Fixing 60494 ignored ICONV_MIME_DECODE_CONTINUE_ON_ERROR).
- Core:
- (Segfault when using convert.quoted-printable-encode filter).
- IMAP:
- (imap_open allows to run arbitrary shell commands via mailbox parameter). (CVE-2018-19518)
- ODBC:
- (odbc_fetch_object has incorrect type signature).
- Opcache:
- (Type inference in opcache causes side effects).
- (array_diff_key() - segmentation fault).
- Phar:
- (PharData always creates new files with mode 0666).
- (Heap Buffer Overflow (READ: 4) in phar_parse_pharfile). (CVE-2018-20783)
- PGSQL:
- (pg_convert has a broken regex for the 'TIME WITHOUT TIMEZONE' data type).
- SOAP:
- (SoapClient can't handle object references correctly).
- (WSDL_CACHE_MEMORY causes Segmentation fault).
- (Signedness issue in SOAP when precision=-1).
- Sockets:
- (Validate length on socket_write).
Version 7.2.12
- Core:
- (Segfault in shutdown function after memory limit error).
- (Cyclic reference in generator not detected).
- (The phpize and ./configure create redundant .deps file).
- (buildconf should output error messages to stderr) (Mizunashi Mana)
- Date:
- Upgraded timelib to 2017.08.
- (Year component overflow with date formats "c", "o", "r" and "y").
- (fractions in `diff()` are not correctly normalized).
- FCGI:
- (Failed shutdown/reboot or end session in Windows).
- (apache_response_headers removes last character from header name).
- FTP:
- (Data truncation due to forceful ssl socket shutdown).
- intl:
- (U_ARGUMENT_TYPE_MISMATCH).
- Reflection:
- (Objects cannot access their private attributes while handling reflection errors).
- (ReflectionFunction::invoke does not invoke closure with object scope).
- Sodium:
- Some base64 outputs were truncated; this is not the case any more.
- block sizes >= 256 bytes are now supposed by sodium_pad() even when an old version of libsodium has been installed.
- (sodium_pad() could read (but not return nor write) uninitialized memory when trying to pad an empty input).
- Standard:
- (INI_SCANNER_RAW doesn't strip trailing whitespace).
- Tidy:
- (tidy::getOptDoc() not available on Windows).
- XML:
- (xml_parse_into_struct() does not resolve entities).
- Add support for getting SKIP_TAGSTART and SKIP_WHITE options.
- XMLRPC:
- (xmlrpc_encode_request() crashes).
Version 7.2.11
- Core:
- (foreach inconsistent if array modified during loop).
- (method_exists on SPL iterator passthrough method corrupts memory).
- CURL:
- (Use curl_multi_wait() so that timeouts are respected).
- iconv:
- (iconv_mime_encode Q-encoding longer than it should be).
- Opcache:
- (ZendOPcache.MemoryBase periodically deleted by the OS).
- (Compile-time evaluation of disabled function in opcache causes segfault).
- POSIX:
- (posix_getgrnam fails to print details of group).
- Reflection:
- (Wrong exception being thrown when using ReflectionMethod).
- Standard:
- (Wrong error message when fopen FTP wrapped fails to open data connection).
- (Bindto IPv6 works with file_get_contents but fails with stream_socket_client).
- (array_reduce is slow when $carry is large array).
- XMLRPC:
- (Can't build xmlrpc with expat).
- Zlib:
- (php_zlib_inflate_filter() may not update bytes_consumed).
Version 7.2.10
- Core:
- (parent private constant in extends class memory leak).
- (Generate enabled extension).
- (Memory leak when using class_alias() in non-debug mode).
- Apache2:
- (XSS due to the header Transfer-Encoding: chunked). (CVE-2018-17082)
- Bz2:
- Fixed arginfo for bzcompress.
- gettext:
- (incorrect restoring of LDFLAGS).
- iconv:
- (iconv_mime_decode can return extra characters in a header).
- (iconv_mime_decode_headers function is skipping headers).
- (iconv_mime_decode does ignore special characters).
- (iconv_mime_decode_headers() skips some headers).
- intl:
- (MessageFormatter::formatMessage memory corruption with 11+ named placeholders).
- libxml:
- ("public id" parameter of libxml_set_external_entity_loader callback undefined).
- mbstring:
- (mb_detect_order return value varies based on argument type).
- Opcache:
- (Opcache treats path containing "test.pharma.tld" as a phar file).
- OpenSSL:
- (unusable ssl => peer_fingerprint in stream_context_create()).
- phpdbg:
- (phpdbg man page contains outdated information).
- SPL:
- (Exception in DirectoryIterator::getLinkTarget()).
- (RegexIterator pregFlags are NULL instead of 0).
- Standard:
- (array_reduce leaks memory if callback throws exception).
- zlib:
- (Zlib version check fails when an include/zlib/ style dir is passed to the --with-zlib configure option).
- (Minimal required zlib library is 1.2.0.4).
Version 7.2.9
- Calendar:
- (jewish.c: compile error under Windows with GBK charset).
- Filter:
- (References in sub-array for filtering breaks the filter).
- PDO_Firebird:
- (Memory leak when fetching a BLOB field).
- PDO_PgSQL:
- (Possible Memory Leak using PDO::CURSOR_SCROLL option).
- SQLite3:
- (SQLite3Stmt::bindValue() with SQLITE3_FLOAT doesn't juggle).
- Standard:
- (Incorrect entries in get_html_translation_table).
- (array_column: null values in $index_key become incrementing keys in result).
- (Segmentation fault when using `output_add_rewrite_var`).
- Zip:
- (ZipArchive memory leak (OVERWRITE flag and empty archive)).
Version 7.2.8
- Core:
- (PHP hangs on 'illegal string offset on string references with an error handler).
- (Object creation leaks memory when executed over HTTP).
- (Chain of mixed exceptions and errors does not serialize properly).
- Date:
- (Undefined property: DateInterval::$f).
- EXIF:
- (heap use after free in _php_stream_free). (CVE-2018-12882)
- (Int Overflow lead to Heap OverFlow in exif_thumbnail_extract of exif.c). (CVE-2018-14883)
- (heap-buffer-overflow (READ of size 48) while reading exif data). (CVE-2018-14851)
- FPM:
- (Vulnerability in php-fpm by changing stdin to non-blocking).
- GMP:
- (Integer Underflow when unserializing GMP and possible other classes).
- intl:
- (get_debug_info handler for BreakIterator shows wrong type).
- mbstring:
- (Integer overflow and excessive memory usage in mb_strimwidth).
- Opcache:
- (Opcache causes empty return value).
- PGSQL:
- (pg_fetch_result did not fetch the next row).
- phpdbg:
- Fix arginfo wrt. optional/required parameters.
- Reflection:
- (PHP crashes with core dump when throwing exception in error handler).
- (ReflectionProperty#getValue() incorrectly works with inherited classes).
- Standard:
- (array_merge_recursive() is duplicating sub-array keys).
- (getimagesize with $imageinfo returns false).
- Win32:
- (windows linkinfo lacks openbasedir check). (CVE-2018-15132)
- ZIP:
- (OPSYS_Z_CPM defined instead of OPSYS_CPM).
Version 7.2.7
- Core:
- (segfault when opcache enabled + extension use zend_register_class_alias).
- CLI Server:
- (PHP built-in server does not find files if root path contains special characters).
- OpenSSL:
- (openssl_pkey_get_public does not respect open_basedir).
- (openssl extension fails to build with LibreSSL 2.7).
- SPL:
- (NoRewindIterator segfault 11).
- Standard:
- (SIGV in zend_mm_alloc_small).
- ("link(): Bad file descriptor" with non-ASCII path).
Version 7.2.6
- EXIF:
- (exif_read_data zend_mm_heap corrupted).
- FPM:
- --with-fpm-acl wrongly tries to find libacl on FreeBSD.
- intl:
- (Locale::parseLocale() broken with some arguments).
- Opcache:
- (PHP-FPM sporadic crash when running Infinitewp).
- (Assertion failure in file cache when unserializing empty try_catch_array).
- (Opcache causes incorrect "undefined variable" errors).
- Reflection:
- Fixed arginfo of array_replace(_recursive) and array_merge(_recursive).
- Session:
- (Url Rewriting (trans_sid) not working on urls that start with "#").
Version 7.2.5
- Core:
- (Convert valgrind detection to configure option).
- Date:
- (mismatch arginfo for date_create).
- Exif:
- (Heap Buffer Overflow (READ: 1786) in exif_iif_add_value). (CVE-2018-10549)
- FPM:
- (ERROR: failed to reload: execvp() failed: Argument list too long).
- Fixed incorrect write to getenv result in FPM reload.
- GD:
- (imagedashedline() - dashed line sometimes is not visible).
- iconv:
- (stream filter convert.iconv leads to infinite loop on invalid sequence). (CVE-2018-10546)
- intl:
- (Intl compilation fails with icu4c 61.1).
- ldap:
- (Malicious LDAP-Server Response causes Crash). (CVE-2018-10548)
- mbstring:
- (Wrong cp1251 detection).
- (mbstring does not build with Oniguruma 6.8.1).
- ODBC:
- (ODBC functions are not available by default on Windows).
- Opcache:
- (Access violation when using opcache).
- Phar:
- (fix for CVE-2018-5712 may not be complete). (CVE-2018-10547)
- phpdbg:
- (Memory corruption: arbitrary NUL overwrite).
- SPL:
- (mismatch arginfo for splarray constructor).
- standard:
- (mail.add_x_header default inconsistent with docs).
- (incorrect url in header for mt_rand).
Version 7.2.4
- Core:
- (Segfault while throwing exception in error_handler).
- ('date: illegal option -- -' in ./configure on FreeBSD).
- FPM:
- (Dumpable FPM child processes allow bypassing opcache access controls). (CVE-2018-10545)
- FTP:
- GD:
- (signed integer conversion in imagescale()).
- (null pointer access crashed php).
- Fixed imagesetinterpolation arginfo.
- iconv:
- (Freeing uninitialized pointer).
- Mbstring:
- (wrong unicode mapping in some charsets).
- Opcache:
- (Assertion failure in live range DCE due to block pass misoptimization).
- OpenSSL:
- Fixed openssl_* arginfos.
- PCNTL:
- (pcntl_wexitstatus returns incorrect on Big_Endian platform (s390x)).
- Phar:
- (Segmentation fault in buildFromIterator when directory name contains a \n).
- Standard:
- (Strange references behavior).
- Fixed some arginfos.
- (parse_ini_string fails to parse "[foo]\nbar=1|>baz" with segfault).
Version 7.2.3
- Core:
- ("stream_isatty" returns wrong value on s390x).
- Apache2Handler:
- (a simple way for segfaults in threadsafe php just with configuration).
- Date:
- (Timezone gets truncated when formatted).
- (Argument 2 for `DateTimeZone::listIdentifiers()` should accept `null`).
- (calling var_dump on a DateTimeZone object modifies it).
- LDAP:
- (Fix LDAP path lookup on 64-bit distros).
- libxml2:
- (use pkg-config where available).
- PGSQL:
- (Memory leak in pg_escape_bytea()).
- Phar:
- (Phar::extractTo() does not accept specific directories to be extracted).
- (deal with leading slash while adding files correctly).
- (deal with leading slash when adding files correctly).
- ODBC:
- (Unable to retrieve value of varchar(max) type).
- Opcache:
- (opcache segfault when installing Bitrix).
- (file_get_contents $http_response_header variable bugged with opcache).
- (Modulus value not stored in variable).
- SPL:
- (strange behavior of AppendIterator).
- Standard:
- (DNS_CAA record results contain garbage).
- (stack-buffer-overflow while parsing HTTP response). (CVE-2018-7584)
Version 7.2.2
- Core:
- (potential memleak in internal classes's static members).
- (Path 260 character problem).
- (Some non-portable == in shell scripts).
- (segfault when using spread operator on generator passed by reference).
- (arg of get_defined_functions is optional).
- (Exit inside generator finally results in fatal error).
- FCGI:
- (getenv() crashes on Windows 7.2.1 when second parameter is false).
- IMAP:
- (imap_append HeapCorruction).
- Opcache:
- (File cache not populated after SHM runs full).
- (var 8 (TMP) has array key type but not value type).
- (Using @ crashes php7.2-fpm).
- (Interned strings buffer overflow may cause crash).
- PDO:
- (PDO extension doesn't allow to be built shared on Darwin).
- PDO MySQL:
- (PDO Mysql module can't be built as module).
- PGSQL:
- (pg_version() crashes when called on a connection to cockroach).
- Readline:
- (readline_read_history segfaults with empty file).
- SAPI:
- ([embed SAPI] Segmentation fault in sapi_register_post_entry).
- SOAP:
- (SoapClient generates E_ERROR even if exceptions=1 is used).
- (Segmentation fault in zend_string_release).
- SPL:
- (RecursiveArrayIterator does not traverse arrays by reference).
- (RecursiveArrayIterator doesn't have constants from parent class).
- (RecursiveArrayIterator does not iterate object properties).
- Standard:
- (substr_count incorrect result).
- (array_values don't work on empty array).
- Zip:
- Display headers (buildtime) and library (runtime) versions in phpinfo (with libzip >= 1.3.1).
Version 7.2.1
- Core:
- (Segmentation fault in 7.1.12 and 7.0.26).
- (PHP seems incompatible with OneDrive files on demand).
- (Access Violation in vcruntime140.dll).
- (Unable to clone instance when private __clone defined).
- (php-process crash when is_file() is used with strings longer 260 chars).
- CLI server:
- (Directory does not exist).
- FPM:
- (libxml_disable_entity_loader setting is shared between requests).
- GD:
- (Potential infinite loop in gdImageCreateFromGifCtx). (CVE-2018-5711)
- Opcache:
- ("Narrowing occurred during type inference" error).
- (Interned strings buffer overflow may cause crash).
- ("Narrowing occurred during type inference" error).
- (Invalid opcode 138/1/1).
- PCRE:
- (preg_last_error not returning error code after error).
- Phar:
- (Reflected XSS in .phar 404 page). (CVE-2018-5712)
- Standard:
- (fread not free unused buffer).
- (mt_rand returns value outside [$min,$max]+ on 32-bit) (Remi)
- (Inappropriately parsing HTTP response leads to PHP segment fault). (CVE-2018-14884)
- (accept EFAULT in addition to ENOSYS as indicator that getrandom() is missing).
- (php_ini_scanned_files() not reporting correctly).
- (putenv does not work properly if parameter contains non-ASCII unicode character).
- Zip:
- (Segfault with libzip 1.3.1).
Version 7.2.0
- BCMath:
- (bcmod truncates fractionals).
- CLI:
- (Process is started as interactive shell in PhpStorm).
- (Interactive shell opening instead of script execution with -f flag).
- CLI server:
- (Random "Invalid request (unexpected EOF)" using a router script).
- Core:
- Added ZEND_COUNT, ZEND_GET_CLASS, ZEND_GET_CALLED_CLASS, ZEND_GET_TYPE, ZEND_FUNC_NUM_ARGS, ZEND_FUNC_GET_ARGS instructions, to implement corresponding builtin functions.
- "Countable" interface is moved from SPL to Core.
- Added ZEND_IN_ARRAY instruction, implementing optimized in_array() builtin function, through hash lookup in flipped array.
- Removed IS_TYPE_IMMUTABLE (it's the same as COPYABLE & !REFCOUNTED).
- Removed the sql.safe_mode directive.
- Removed support for Netware.
- Renamed ReflectionClass::isIterateable() to ReflectionClass::isIterable() (alias original name for BC).
- (WSA cleanup executes before MSHUTDOWN).
- (Disallow mail header injections by extra headers) (Yasuo)
- (proc_nice() for Windows).
- Fix pthreads detection when cross-compiling (ffontaine)
- Fixed memory leaks caused by exceptions thrown from destructors. (Bob, Dmitry).
- (uniqid() should use better random source).
- (Add ENABLE_VIRTUAL_TERMINAL_PROCESSING flag for php.exe).
- Implemented "Convert numeric keys in object/array casts" RFC, fixes bugs , , , , , etc.
- Implemented "Deprecate and Remove Bareword (Unquoted) Strings" RFC.
- Raised minimum supported Windows versions to Windows 7/Server 2008 R2.
- Implemented minor optimization in array_keys/array_values().
- Added PHP_OS_FAMILY constant to determine on which OS we are.
- (Method compatibility check looks to original definition and not parent).
- (JSON_OBJECT_AS_ARRAY not respected).
- (Corrupted class entries on shutdown when a destructor spawns another object).
- (Filename got limited to MAX_PATH on Win32 when scan directory).
- , bug , bug , bug and others related to interned strings handling in TS builds.
- Implemented "Trailing Commas In List Syntax" RFC for group use lists only.
- (It's possible to override trait property with different loosely-equal value).
- (Restraining __construct() access level in subclass gives a fatal error).
- (Cannot override an abstract method with an abstract method).
- (Traits enforce different inheritance rules).
- Fixed misparsing of abstract unix domain socket names.
- Change PHP_OS_FAMILY value from "OSX" to "Darwin".
- Allow loading PHP/Zend extensions by name in ini files (extension=<name>).
- Added object type annotation.
- (crash with a combination of INI entries at startup).
- (isset on zero-prefixed numeric indexes in array broken).
- Added new VM instuctions ISSET_ISEMPTY_CV and UNSET_CV. Previously they were implemented as ISSET_ISEMPTY_VAR and UNSET_VAR variants with ZEND_QUICK_SET flag.
- (unserialize() doesn't handle changes in property visibility).
- (extension_dir = "./ext" now use current directory for base).
- (Improved error message on fetching property of non-object).
- (buildcheck.sh check for autoconf version needs to be updated for v2.64).
- (Data race in ZTS builds).
- ("stream_copy_to_stream" doesn't stream anymore).
- cURL:
- (OpenSSL support not detected).
- Better fix for (use pkg-config instead of curl-config).
- Date:
- (Impossible to prototype DateTime::createFromFormat).
- (Adding the DateTime constants to the DateTimeInterface interface).
- (Out-Of-Bounds Read in timelib_meridian()). (CVE-2017-16642)
- (redefinition of typedefs ttinfo and t1info).
- (DateInterval microseconds property always 0).
- Dba:
- (flatfile: dba_fetch() fails to read replaced entry).
- DOM:
- (Implement Countable for DomNodeList and DOMNamedNodeMap).
- EXIF:
- Added support for vendor specific tags for the following formats: Samsung, DJI, Panasonic, Sony, Pentax, Minolta, Sigma/Foveon, AGFA, Kyocera, Ricoh & Epson.
- (exif_read_data() fails to read all data for some images).
- (Type confusion in exif_read_data() leading to heap overflow in debug mode).
- (Exif Header component value check error).
- (Corrupt EXIF header: maximum directory nesting level reached for some cameras).
- Fixed Redhat bug #1362571 (PHP not returning full results for exif_read_data function).
- (exif_read_data/thumbnail: add support for stream resource).
- Deprecated the read_exif_data() alias.
- (exif_read_data(): "Illegal IFD size" warning occurs with correct exif format).
- (EXIF thumbnails not read anymore).
- (php crashes with segfault when exif_read_data called).
- (exif_read_data(): Illegal IFD offset (works fine with other exif readers).
- Fileinfo:
- Upgrade bundled libmagic to 5.31.
- FPM:
- Configuration to limit fpm slow log trace callers.
- (php_value acts like php_admin_value).
- FTP:
- Implement MLSD for structured listing of directories.
- Added ftp_append() function.
- GD:
- Implemented imageresolution as getter and setter (Christoph)
- (gd.h: stdarg.h include missing for va_list use in gdErrorMethod).
- (Memory disclosure or DoS via crafted .bmp image).
- GMP:
- (gmp_fact() silently ignores non-integer input).
- Hash:
- Changed HashContext from resource to object.
- Disallowed usage of non-cryptographic hash functions with HMAC and PBKDF2.
- (sha3 is not supported on bigendian machine).
- IMAP:
- (imap_mailboxmsginfo() return wrong size).
- Intl:
- (test using Spoofchecker which may be unavailable).
- ([REGRESSION] IntlDateFormatter::parse() does not change $position argument).
- JSON:
- Add JSON_INVALID_UTF8_IGNORE and JSON_INVALID_UTF8_SUBSTITUTE options for json_encode and json_decode to ignore or replace invalid UTF-8 byte sequences - it addresses request .
- (Buffer overflow in json_decode() with JSON_INVALID_UTF8_IGNORE or JSON_INVALID).
- (JSON_PARTIAL_OUTPUT_ON_ERROR can result in JSON with null key).
- LDAP:
- (Support for LDAP EXOP operations)
- Fixed support for LDAP_OPT_SERVER_CONTROLS and LDAP_OPT_CLIENT_CONTROLS in ldap_get_option
- Fixed passing an empty array to ldap_set_option for client or server controls.
- Mbstring:
- (mb_chr() and mb_ord()).
- (mb_scrub()).
- (enhancement for mb_convert_encoding() that handles multibyte replacement char nicely).
- Added array input support to mb_convert_encoding().
- Added array input support to mb_check_encoding().
- (enhancement for mb_substitute_character).
- Update to oniguruma version 6.3.0.
- (mb_strtolower fails on titlecase characters).
- Mcrypt:
- The deprecated mcrypt extension has been moved to PECL.
- Opcache:
- Added global optimisation passes based on data flow analysis using Single Static Assignment (SSA) form: Sparse Conditional Constant Propagation (SCCP), Dead Code Elimination (DCE), and removal of unused local variables (Nikita, Dmitry)
- Fixed incorect constant conditional jump elimination.
- (Invalid opcode 49/1/8 using opcache).
- Fixed bug (assertion fails with extended info generated).
- Fixed bug (Phi sources removel).
- (Webserver hangs on valid PHP text).
- (segfault loading WordPress wp-admin).
- OpenSSL:
- Use TLS_ANY for default ssl:// and tls:// negotiation.
- Fix leak in openssl_spki_new().
- Added openssl_pkcs7_read() and pk7 parameter to openssl_pkcs7_verify().
- Add ssl security_level stream option to support OpenSSL security levels. (Jakub Zelenka).
- Allow setting SNI cert and private key in separate files.
- (openssl_pkcs7_encrypt() uses different EOL than before).
- Automatically load OpenSSL configuration file.
- PCRE:
- Added support for PCRE JIT fast path API.
- (Inconsistent PCRE captures in match results).
- (Minor BC break: PCRE_JIT changes output of preg_match()).
- (preg_grep() is not reporting PREG_BAD_UTF8_ERROR after first input string).
- (PCRE JIT broken in 7.2).
- (Broken build when system libpcre don't have jit support).
- phar:
- (phar does not correctly handle names containing dots).
- PDO:
- (Emulated statements let value dictate parameter type).
- Add "Sent SQL" to debug dump for emulated prepares.
- Add parameter types for national character set strings.
- PDO_DBlib:
- (bigint columns are returned as strings).
- Expose DB-Library version as \PDO::DBLIB_ATTR_VERSION attribute on \PDO instance.
- Add test coverage for bug .
- PDO_OCI:
- (Align --with-pdo-oci configure option with --with-oci8 syntax).
- PDO_Sqlite:
- Switch to sqlite3_prepare_v2() and sqlite3_close_v2() functions (rasmus)
- PHPDBG:
- Added extended_value to opcode dump output.
- Session:
- (Prohibit session save handler recursion).
- PR Removed register_globals related code and "!" can be used as $_SESSION key name.
- Improved bug fix. 'user' save handler can only be set by session_set_save_handler()
- (5 session functions incorrectly warn when calling in read-only/getter mode).
- (session_cache_expire/cache_limiter/save_path() trigger a warning in read mode).
- (session fails to start after having headers sent).
- Sodium:
- New cryptographic extension
- Added missing bindings for libsodium > 1.0.13.
- SPL:
- (Incorrect arginfo for ArrayIterator::__construct).
- Added spl_object_id().
- SQLite3:
- Implement writing to blobs.
- Update to Sqlite 3.20.1.
- Standard:
- (closing of fd incorrect when PTS enabled).
- (unserialize accepts two plus/minus signs for float number exponent part).
- Compatibility with libargon2 versions 20161029 and 20160821.
- (mysqli_get_client_info reflection info).
- Add support for extension name as argument to dl().
- (uniqid() without more_entropy performs badly).
- (heap-use-after-free when unserializing invalid array size). (CVE-2017-12932)
- (A Denial of Service Vulnerability was found when performing deserialization).
- (mt_rand() bias on 64-bit machines).
- (Argon2i always throws NUL at the end).
- Streams:
- Default ssl/single_dh_use and ssl/honor_cipher_order to true.
- XML:
- Moved utf8_encode() and utf8_decode() to the Standard extension.
- XMLRPC:
- Use Zend MM for allocation in bundled libxmlrpc (Joe)
- ZIP:
- Add support for encrypted archives.
- Use of bundled libzip is deprecated, --with-libzip option is recommended.
- (Reflection of ZipArchive does not show public properties).
- ZipArchive implements countable, added ZipArchive::count() method.
- Fix segfault in php_stream_context_get_option call.
- (new method setEncryptionName() seems not to exist in ZipArchive).
- zlib:
- Expose inflate_get_status() and inflate_get_read_len() functions.
Version 7.1.33
- FPM:
- (env_path_info underflow in fpm_main.c can lead to RCE). (CVE-2019-11043)
Version 7.1.32
- mbstring:
- Fixed CVE-2019-13224 (don't allow different encodings for onig_new_deluxe) (stas)
- pcre:
- (heap use-after-free in pcrelib) (cmb)
Version 7.1.31
- SQLite:
- Upgraded to SQLite 3.28.0.
- EXIF:
- (heap-buffer-overflow on exif_process_user_comment). (CVE-2019-11042)
- (heap-buffer-overflow on exif_scan_thumbnail). (CVE-2019-11041)
- Phar:
- (Potential UAF in Phar RSHUTDOWN).
Version 7.1.30
- EXIF:
- (heap-buffer-overflow on php_jpg_get16) (CVE-2019-11040).
- GD:
- (Uninitialized read in gdImageCreateFromXbm) (CVE-2019-11038).
- Iconv:
- (Out-of-bounds read in iconv.c:_php_iconv_mime_decode() due to integer overflow) (CVE-2019-11039).
- SQLite:
- (Bypassing open_basedir restrictions via file uris).
Version 7.1.29
- EXIF:
- (Heap-buffer-overflow in _estrndup via exif_process_IFD_TAG) (CVE-2019-11036).
- Mail:
- (Potential heap corruption in TSendMail()).
Version 7.1.28
- EXIF:
- (Heap-buffer-overflow in php_ifd_get32s). (CVE-2019-11034)
- (Heap-buffer-overflow in exif_iif_add_value). (CVE-2019-11035)
- SQLite3:
- Added sqlite3.defensive INI directive.
Version 7.1.27
- Core:
- (rename() across the device may allow unwanted access during processing). (CVE-2019-9637)
- EXIF:
- (Uninitialized read in exif_process_IFD_in_TIFF). (CVE-2019-9641)
- (Invalid Read on exif_process_SOFn). (CVE-2019-9640)
- (Uninitialized read in exif_process_IFD_in_MAKERNOTE). (CVE-2019-9638)
- (Uninitialized read in exif_process_IFD_in_MAKERNOTE). (CVE-2019-9639)
- PHAR:
- (Null Pointer Dereference in phar_create_or_parse_filename).
- (phar_tar_writeheaders_int() buffer overflow).
- SPL:
- (openFile() silently truncates after a null byte).
Version 7.1.26
- Core:
- (memcpy with negative length via crafted DNS response). (CVE-2019-9022)
- GD:
- (efree() on uninitialized Heap data in imagescale leads to use-after-free). (CVE-2016-10166)
- (imagecolormatch Out Of Bounds Write on Heap). (CVE-2019-6977)
- IMAP:
- (null pointer dereference in imap_mail).
- Mbstring:
- (Buffer overflow on mb regex functions - fetch_token). (CVE-2019-9023)
- (heap buffer overflow in mb regex functions - compile_string_node). (CVE-2019-9023)
- (heap buffer overflow in multibyte match_at). (CVE-2019-9023)
- (heap buffer overflow due to incorrect length in expand_case_fold_string). (CVE-2019-9023)
- (buffer overflow in fetch_token). (CVE-2019-9023)
- (Buffer overflow in multibyte case folding - unicode). (CVE-2019-9023)
- (Heap overflow in utf32be_mbc_to_code). (CVE-2019-9023)
- Phar:
- (heap buffer overflow in phar_detect_phar_fname_ext). (CVE-2019-9021)
- Xmlrpc:
- (heap out of bounds read in xmlrpc_decode()). (CVE-2019-9020)
- (Global out of bounds read in xmlrpc base64 code). (CVE-2019-9024)
Version 7.1.25
- Core:
- (zend_signal_startup() needs ZEND_API).
- (Segfault when using convert.quoted-printable-encode filter).
- ftp:
- (ftp_close(): SSL_read on shutdown).
- iconv:
- (Fixing 60494 ignored ICONV_MIME_DECODE_CONTINUE_ON_ERROR).
- IMAP:
- (imap_open allows to run arbitrary shell commands via mailbox parameter). (CVE-2018-19518)
- ODBC:
- (odbc_fetch_object has incorrect type signature).
- Opcache:
- (Type inference in opcache causes side effects).
- Phar:
- (PharData always creates new files with mode 0666).
- (Heap Buffer Overflow (READ: 4) in phar_parse_pharfile). (CVE-2018-20783)
- PGSQL:
- (pg_convert has a broken regex for the 'TIME WITHOUT TIMEZONE' data type).
- SOAP:
- (WSDL_CACHE_MEMORY causes Segmentation fault).
- (Signedness issue in SOAP when precision=-1).
- Sockets:
- (Validate length on socket_write).
Version 7.1.24
- Core:
- (Cyclic reference in generator not detected).
- (The phpize and ./configure create redundant .deps file).
- (buildconf should output error messages to stderr) (Mizunashi Mana)
- Date:
- (Year component overflow with date formats "c", "o", "r" and "y").
- FCGI:
- (Failed shutdown/reboot or end session in Windows).
- (apache_response_headers removes last character from header name).
- FTP:
- (Data truncation due to forceful ssl socket shutdown).
- intl:
- (U_ARGUMENT_TYPE_MISMATCH).
- Standard:
- (INI_SCANNER_RAW doesn't strip trailing whitespace).
- Tidy:
- (tidy::getOptDoc() not available on Windows).
- XML:
- (xml_parse_into_struct() does not resolve entities).
- Add support for getting SKIP_TAGSTART and SKIP_WHITE options.
Version 7.1.23
- Core:
- (method_exists on SPL iterator passthrough method corrupts memory).
- (Segfault in shutdown function after memory limit error).
- CURL:
- (Use curl_multi_wait() so that timeouts are respected).
- iconv:
- (iconv_mime_encode Q-encoding longer than it should be).
- Opcache:
- (ZendOPcache.MemoryBase periodically deleted by the OS).
- POSIX:
- (posix_getgrnam fails to print details of group).
- Reflection:
- (Wrong exception being thrown when using ReflectionMethod).
- Standard:
- (Wrong error message when fopen FTP wrapped fails to open data connection).
- (Bindto IPv6 works with file_get_contents but fails with stream_socket_client).
- (array_reduce is slow when $carry is large array).
- Zlib:
- (php_zlib_inflate_filter() may not update bytes_consumed).
Version 7.1.22
- Core:
- (parent private constant in extends class memory leak).
- (Generate enabled extension).
- Apache2:
- (XSS due to the header Transfer-Encoding: chunked). (CVE-2018-17082)
- Bz2:
- Fixed arginfo for bzcompress.
- gettext:
- (incorrect restoring of LDFLAGS).
- iconv:
- (iconv_mime_decode can return extra characters in a header).
- (iconv_mime_decode_headers function is skipping headers).
- (iconv_mime_decode does ignore special characters).
- (iconv_mime_decode_headers() skips some headers).
- intl:
- (MessageFormatter::formatMessage memory corruption with 11+ named placeholders).
- libxml:
- ("public id" parameter of libxml_set_external_entity_loader callback undefined).
- mbstring:
- (mb_detect_order return value varies based on argument type).
- Opcache:
- (Opcache treats path containing "test.pharma.tld" as a phar file).
- OpenSSL:
- (unusable ssl => peer_fingerprint in stream_context_create()).
- phpdbg:
- (phpdbg man page contains outdated information).
- SPL:
- (Exception in DirectoryIterator::getLinkTarget()).
- (RegexIterator pregFlags are NULL instead of 0).
- Standard:
- (array_reduce leaks memory if callback throws exception).
- zlib:
- (Zlib version check fails when an include/zlib/ style dir is passed to the --with-zlib configure option).
- (Minimal required zlib library is 1.2.0.4).
Version 7.1.21
- Calendar:
- (jewish.c: compile error under Windows with GBK charset).
- Filter:
- (References in sub-array for filtering breaks the filter).
- PDO_Firebird:
- (Memory leak when fetching a BLOB field).
- PDO_PgSQL:
- (Possible Memory Leak using PDO::CURSOR_SCROLL option).
- SQLite3:
- (SQLite3Stmt::bindValue() with SQLITE3_FLOAT doesn't juggle).
- Standard:
- (array_column: null values in $index_key become incrementing keys in result).
- (Incorrect entries in get_html_translation_table).
- (Segmentation fault when using `output_add_rewrite_var`).
- Zip:
- (ZipArchive memory leak (OVERWRITE flag and empty archive)).
Version 7.1.20
- Core:
- (PHP hangs on 'illegal string offset on string references with an error handler).
- (Chain of mixed exceptions and errors does not serialize properly).
- Date:
- (Undefined property: DateInterval::$f).
- exif:
- (Int Overflow lead to Heap OverFlow in exif_thumbnail_extract of exif.c). (CVE-2018-14883)
- (heap-buffer-overflow (READ of size 48) while reading exif data). (CVE-2018-14851)
- FPM:
- (Vulnerability in php-fpm by changing stdin to non-blocking).
- GMP:
- (Integer Underflow when unserializing GMP and possible other classes).
- intl:
- (get_debug_info handler for BreakIterator shows wrong type).
- mbstring:
- (Integer overflow and excessive memory usage in mb_strimwidth).
- PGSQL:
- (pg_fetch_result did not fetch the next row).
- phpdbg:
- Fix arginfo wrt. optional/required parameters.
- Reflection:
- (PHP crashes with core dump when throwing exception in error handler).
- (ReflectionProperty#getValue() incorrectly works with inherited classes).
- Standard:
- (array_merge_recursive() is duplicating sub-array keys).
- (getimagesize with $imageinfo returns false).
- Win32:
- (windows linkinfo lacks openbasedir check). (CVE-2018-15132)
Version 7.1.19
- CLI Server:
- (PHP built-in server does not find files if root path contains special characters).
- OpenSSL:
- (openssl_pkey_get_public does not respect open_basedir).
- (openssl extension fails to build with LibreSSL 2.7).
- SPL:
- (NoRewindIterator segfault 11).
- Standard:
- ("link(): Bad file descriptor" with non-ASCII path).
- (array_map on $GLOBALS returns IS_INDIRECT).
Version 7.1.18
- FPM:
- --with-fpm-acl wrongly tries to find libacl on FreeBSD.
- intl:
- (Locale::parseLocale() broken with some arguments).
- Opcache:
- (PHP-FPM sporadic crash when running Infinitewp).
- (Assertion failure in file cache when unserializing empty try_catch_array).
- (Opcache causes incorrect "undefined variable" errors).
- Reflection:
- Fixed arginfo for array_replace(_recursive) and array_merge(_recursive).
Version 7.1.17
- Date:
- (mismatch arginfo for date_create).
- Exif:
- (Heap Buffer Overflow (READ: 1786) in exif_iif_add_value). (CVE-2018-10549)
- FPM:
- (ERROR: failed to reload: execvp() failed: Argument list too long).
- Fixed incorrect write to getenv result in FPM reload.
- GD:
- (imagedashedline() - dashed line sometimes is not visible).
- iconv:
- (stream filter convert.iconv leads to infinite loop on invalid sequence). (CVE-2018-10546)
- intl:
- (Intl compilation fails with icu4c 61.1).
- ldap:
- (Malicious LDAP-Server Response causes Crash). (CVE-2018-10548)
- mbstring:
- (Wrong cp1251 detection).
- (mbstring does not build with Oniguruma 6.8.1).
- Phar:
- (fix for CVE-2018-5712 may not be complete). (CVE-2018-10547)
- phpdbg:
- (Memory corruption: arbitrary NUL overwrite).
- SPL:
- (mismatch arginfo for splarray constructor).
- standard:
- (incorrect url in header for mt_rand).
Version 7.1.16
- Core:
- (Segfault while throwing exception in error_handler).
- ('date: illegal option -- -' in ./configure on FreeBSD).
- FPM:
- (Dumpable FPM child processes allow bypassing opcache access controls). (CVE-2018-10545)
- GD:
- (signed integer conversion in imagescale()).
- ODBC:
- (ODBC functions are not available by default on Windows).
- Opcache:
- (opcache corrupts variable in for-loop).
- Phar:
- (Segmentation fault in buildFromIterator when directory name contains a \n).
- Standard:
- (mail.add_x_header default inconsistent with docs).
- (parse_ini_string fails to parse "[foo]\nbar=1|>baz" with segfault).
Version 7.1.15
- Apache2Handler:
- (a simple way for segfaults in threadsafe php just with configuration).
- Date:
- (Timezone gets truncated when formatted).
- (Argument 2 for `DateTimeZone::listIdentifiers()` should accept `null`).
- (calling var_dump on a DateTimeZone object modifies it).
- PGSQL:
- (Memory leak in pg_escape_bytea()).
- ODBC:
- (Unable to retrieve value of varchar(max) type).
- LDAP:
- (Fix LDAP path lookup on 64-bit distros).
- libxml2:
- (use pkg-config where available).
- Phar:
- (deal with leading slash when adding files correctly).
- SPL:
- (strange behavior of AppendIterator).
- Standard:
- (DNS_CAA record results contain garbage).
- (stack-buffer-overflow while parsing HTTP response). (CVE-2018-7584)
Version 7.1.14
- Core:
- (Path 260 character problem).
- (segfault when using spread operator on generator passed by reference).
- (arg of get_defined_functions is optional).
- (Exit inside generator finally results in fatal error).
- (self keyword leads to incorrectly generated TypeError when in closure in trait).
- FCGI:
- (getenv() crashes on Windows 7.2.1 when second parameter is false).
- IMAP:
- (imap_append HeapCorruction).
- Opcache:
- (File cache not populated after SHM runs full).
- (Interned strings buffer overflow may cause crash).
- PGSQL:
- (pg_version() crashes when called on a connection to cockroach).
- Readline:
- (readline_read_history segfaults with empty file).
- SAPI:
- ([embed SAPI] Segmentation fault in sapi_register_post_entry).
- SOAP:
- (SoapClient generates E_ERROR even if exceptions=1 is used).
- (Segmentation fault in zend_string_release).
- SPL:
- (RecursiveArrayIterator does not traverse arrays by reference).
- (RecursiveArrayIterator doesn't have constants from parent class).
- (RecursiveArrayIterator does not iterate object properties).
- Standard:
- (substr_count incorrect result).
Version 7.1.13
- Core:
- (Segmentation fault in 7.1.12 and 7.0.26).
- (PHP seems incompatible with OneDrive files on demand).
- (Unable to clone instance when private __clone defined).
- (php-process crash when is_file() is used with strings longer 260 chars).
- CLI Server:
- (Random "Invalid request (unexpected EOF)" using a router script).
- (Directory does not exist).
- FPM:
- (libxml_disable_entity_loader setting is shared between requests).
- GD:
- (Potential infinite loop in gdImageCreateFromGifCtx). (CVE-2018-5711)
- Opcache:
- ("Narrowing occurred during type inference" error).
- (Interned strings buffer overflow may cause crash).
- ("Narrowing occurred during type inference" error).
- PCRE:
- (preg_last_error not returning error code after error).
- Phar:
- (Reflected XSS in .phar 404 page). (CVE-2018-5712)
- Standard:
- (fread not free unused buffer).
- (mt_rand returns value outside [$min,$max]+ on 32-bit) (Remi)
- (Inappropriately parsing HTTP response leads to PHP segment fault). (CVE-2018-14884)
- (accept EFAULT in addition to ENOSYS as indicator that getrandom() is missing).
- (php_ini_scanned_files() not reporting correctly).
- (putenv does not work properly if parameter contains non-ASCII unicode character).
- Zip:
- (Segfault with libzip 1.3.1).
Version 7.1.12
- Core:
- (Crash when modifing property name in __isset for BP_VAR_IS).
- (mmap/munmap trashing on unlucky allocations).
- CLI:
- (Builtin webserver crash after chdir in a shutdown function).
- Enchant:
- (enchant_broker_get_path crashes if no path is set).
- (Enchant still reports version 1.1.0).
- Exif:
- (Exif extension has built in revision version).
- GD:
- (imagerotate may alter image dimensions).
- (Wrong reflection on imagewebp).
- intl:
- (UConverter::setDestinationEncoding changes source instead of destination).
- interbase:
- (Incorrect reflection for ibase_[p]connect).
- Mysqli:
- (Wrong reflection for mysqli_fetch_all function).
- OCI8:
- OpenSSL:
- (openssl_x509_parse leaks memory).
- (Wrong reflection for openssl_open function).
- Opcache:
- (Warning Internal error: wrong size calculation).
- PGSQL:
- (Default link incorrectly cleared/linked by pg_close()).
- SOAP:
- (Wrong reflection on SoapClient::__setSoapHeaders).
- Zlib:
- (Wrong reflection on inflate_init and inflate_add).
Version 7.1.11
- Core:
- (Null pointer dereference in zend_mm_alloc_small()).
- (infinite loop when printing an error-message).
- (Incorrect token formatting on two parse errors in one request).
- (Segfault when calling is_callable on parent).
- (debug info of Closures of internal functions contain garbage argument names).
- Date:
- (Out-Of-Bounds Read in timelib_meridian()). (CVE-2017-16642)
- Apache2Handler:
- (error: 'zend_hash_key' has no member named 'arKey' in apache2handler).
- Hash:
- (sha3 hangs on bigendian).
- Intl:
- (The parameter of UConverter::getAliases() is not optional).
- litespeed:
- (Binary directory doesn't get created when building only litespeed SAPI).
- (Missing program prefix and suffix).
- mcrypt:
- (arcfour encryption stream filter crashes php).
- MySQLi:
- (Data corruption when reading fields of bit type).
- OCI8:
- Fixed incorrect reference counting.
- Opcache:
- (Request hangs and not finish).
- PCRE:
- (applied upstream patch for CVE-2016-1283).
- PDO_mysql:
- (Type 'bit' is fetched as unexpected string).
- SPL:
- (SplDoublyLinkedList::setIteratorMode masks intern flags).
Version 7.1.10
- Core:
- (run-tests.php issues with EXTENSION block).
- BCMath:
- (bcpowmod() fails if scale != 0).
- (BC math handles minus zero incorrectly).
- (bcpowmod() may return 1 if modulus is 1).
- (bcpowmod() misbehaves for non-integer base or modulus).
- CLI server:
- (Built-in server truncates headers spanning over TCP packets).
- CURL:
- (OpenSSL support not detected).
- GD:
- (gdImageGrayScale() may produce colors).
- (libgd/gd_interpolation.c:1786: suspicious if ?).
- Gettext:
- (textdomain(null) throws in strict mode).
- Intl:
- (IntlGregorianCalendar doesn't have constants from parent class).
- (segfault in collator_convert_object_to_string).
- PDO_OCI:
- (PDO_PCO with PHP-FPM: OCI environment initialized before PHP-FPM sets it up).
- SPL:
- (AppendIterator::append() is broken when appending another AppendIterator).
- (incorrect behavior of AppendIterator::append in foreach loop).
- Standard:
- (signed integer overflow in parse_iv).
- (gethostname fails if your host name is 64 chars long).
Version 7.1.9
- Core:
- (Segfault in scanner on INF number).
- (null deref and segfault in zend_generator_resume()).
- (html_errors=1 breaks unhandled exceptions).
- (Main CWD initialized with wrong codepage).
- (NAN comparison).
- cURL:
- (Fixed finding CURL on systems with multiarch support).
- Date:
- (Null Pointer Dereference in timelib_time_clone).
- Intl:
- (Wrong reflection on some locale_* functions).
- Mbstring:
- (Segmentation fault mb_strcut with HTML-ENTITIES encoding).
- (mb_convert_kana() does not convert iteration marks).
- (Wrong reflection on mb_eregi_replace).
- MySQLi:
- (PHP crashes when calling mysqli_result::fetch_object with an abstract class).
- OCI8:
- Expose oci_unregister_taf_callback() (Tianfang Yang)
- Opcache:
- (Narrowing occurred during type inference).
- phar:
- (include_path has a 4096 char limit in some cases).
- Reflection:
- (null pointer dereference in _function_string).
- Session:
- (Url Rewriting (trans_sid) not working on urls that start with "#").
- (SID constant created with wrong module number).
- SimpleXML:
- (nullpointer deref in simplexml_element_getDocNamespaces).
- SPL:
- (spl_autoload_unregister can't handle spl_autoload_functions results).
- (Unserialize ArrayIterator broken).
- (Appending AppendIterator leads to segfault).
- (Crash in recursive iterator destructors).
- Standard:
- (unpack with X* causes infinity loop).
- (heap-use-after-free when unserializing invalid array size). (CVE-2017-12932)
- (A Denial of Service Vulnerability was found when performing deserialization).
- WDDX:
- (WDDX uses wrong decimal seperator).
- XMLRPC:
- (Incorrect xmlrpc serialization for classes with declared properties).
Version 7.1.8
- Core:
- (Loading PHP extension with already registered function name leads to a crash).
- (parse_url() broken when query string contains colon).
- (Unary operator expected error on some systems).
- (Use After Free in unserialize() SplFixedArray).
- (Crash when crawling through network share).
- (fixed incorrect poll.h include).
- (fixed incorrect errno.h include).
- Date:
- (property_exists returns true on unknown DateInterval property).
- OCI8:
- (Integer overflow in oci_bind_array_by_name).
- Opcache:
- (Infinite loop in type inference when using HTMLPurifier).
- OpenSSL:
- (pkcs7_en/decrypt does not work if \x0a is used in content).
- Added OPENSSL_DONT_ZERO_PAD_KEY constant to prevent key padding and fix bug (openssl_open() returns junk on envelope < 16 bytes) and bug (OpenSSL Blowfish encryption is incorrect for short keys).
- PDO:
- (PDOStatement::debugDumpParams() truncates query).
- SPL:
- (PHP freezes with AppendIterator).
- SQLite3:
- (SQLite3::__construct() produces "out of memory" exception with invalid flags).
- Wddx:
- (huge memleak when wddx_unserialize).
- (wddx parsing empty boolean tag leads to SIGSEGV). (CVE-2017-11143)
- zlib:
- (dictionary option of inflate_init() does not work).
Version 7.1.7
- Core:
- (Multiple [PATH=] and [HOST=] sections not properly parsed).
- (Undefined constants in array properties result in broken properties).
- Fixed misparsing of abstract unix domain socket names.
- (PHP INI Parsing Stack Buffer Overflow Vulnerability). (CVE-2017-11628)
- (Unserialize Heap Use-After-Free (READ: 1) in zval_get_type). (CVE-2017-12934)
- (Heap buffer overread (READ: 1) finish_nested_data from unserialize). (CVE-2017-12933)
- (wddx_deserialize() heap out-of-bound read via php_parse_date()). (CVE-2017-11145)
- Date:
- (implement clone for DatePeriod and DateInterval).
- DOM:
- (References to deleted XPath query results).
- GD:
- (Buffer over-read into uninitialized memory). (CVE-2017-7890)
- Intl:
- (Stack Buffer Overflow in msgfmt_parse_message). (CVE-2017-11362)
- (Wrong reflection on Collator::getSortKey and collator_get_sort_key).
- Mbstring:
- Add oniguruma upstream fix (CVE-2017-9224, CVE-2017-9226, CVE-2017-9227, CVE-2017-9228, CVE-2017-9229)
- OCI8:
- Opcache:
- (Segfault with opcache.memory_protect and validate_timestamp).
- Revert opcache.enable_cli to default disabled.
- OpenSSL:
- (pkcs7_en/decrypt does not work if \x1a is used in content).
- (negative-size-param (-1) in memcpy in zif_openssl_seal()). (CVE-2017-11144)
- PDO_OCI:
- Support Instant Client 12.2 in --with-pdo-oci configure option.
- Reflection:
- (Segfault when cast Reflection object to string with undefined constant).
- SPL:
- (null coalescing operator failing with SplFixedArray).
- FTP:
- (ftp:// wrapper ignores context arg).
- PHAR:
- (Phar::__construct reflection incorrect).
- SOAP:
- (Incorrect conversion array with WSDL_CACHE_MEMORY).
- Streams:
- (stream_socket_get_name() returns '\0').
Version 7.1.6
- Core:
- (crash (SIGSEGV) in _zend_hash_add_or_update_i).
- (SIGILL in ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST).
- (__DIR__ wrong for unicode character).
- intl:
- (wrong reflection on Collator::sortWithSortKeys).
- MySQLi:
- (mysqli::change_user() doesn't accept null as $database argument w/strict_types).
- Opcache:
- (SIGSEGV with opcache.revalidate_path enabled).
- phar:
- (Phar::webPhar() does not handle requests sent through PUT and DELETE method).
- Readline:
- (readline() moves the cursor to the beginning of the line).
- Standard:
- (win32/sendmail.c anchors CC header but not BCC).
- xmlreader:
- (Wrong reflection on XMLReader::expand).
Version 7.1.5
- Core:
- (Endless loop bypassing execution time limit).
- (Segfault when killing within bash script trap code).
- (Magic function __get has different behavior in php 7.1.x).
- (Null coalescing operator fails for undeclared static class properties).
- (multiple catch freezes in some cases).
- (stream_select() is broken on Windows Nanoserver).
- (php-cgi.exe crash on facebook callback).
- Date:
- (Wrong reflection on DateTimeZone::getTransitions).
- (add constant for RFC7231 format datetime).
- DOM:
- (Wrong reflection on DOMNode::cloneNode).
- Fileinfo:
- (syntax error compile error in libmagic/apprentice.c).
- GD:
- (compile fails on solaris 11 with system gd2 library).
- MySQLnd:
- (Invalid free of persistent results on error/connection loss).
- Intl:
- (Intl does not support DateTimeImmutable).
- (IntlDateFormatter->format() doesn't return microseconds/fractions).
- (wrong reflection for Normalizer methods).
- (wrong reflection for Locale methods).
- Opcache:
- (Segmentation error while running a script in CLI mode).
- (foreach infinite loop).
- (Opcached version produces a nested array).
- OpenSSL:
- (null character not allowed in openssl_pkey_get_private).
- (Segfault in openssl_pkey_new when generating DSA or DH key).
- (openssl_x509_parse fails to parse ASN.1 UTCTime without seconds).
- phar:
- (phar method parameters reflection correction).
- Readline:
- (readline() immediately returns false in interactive console mode).
- Standard:
- (setcookie allows max-age to be negative).
- (Compaction in array_rand() violates COW).
- Streams:
- (Remote socket URI with unique persistence identifier broken).
Version 7.1.4
- Core:
- (static embed SAPI linkage error).
- (falsely exits with "Out of Memory" when using USE_ZEND_ALLOC=0).
- (Leak with instance method calling static method with referenced return).
- (Resolution of self::FOO in class constants not correct).
- (Build problems after 7.0.17 release: undefined reference to `isfinite').
- (yield fromLABEL is over-greedy).
- Apache:
- Reverted patch for bug , fixes bug .
- Date:
- (Swatch time value incorrect for dates before 1970).
- DOM:
- (LIBXML_NOWARNING flag ingnored on loadHTML*).
- iconv:
- (iconv fails to fail on surrogates).
- Opcache:
- (OPcache compilation performance regression in PHP 5.6/7 with huge classes).
- OpenSSL:
- (fwrite() on non-blocking SSL sockets doesn't work).
- PDO MySQL:
- (Expose MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT to PDO interface).
- SPL:
- (ArrayObject can not notice changes).
- SQLite:
- (Allow creation of deterministic sqlite functions).
- Streams:
- (Correctly fail on invalid IP address ports).
- zlib:
- (deflate_add can allocate too much memory).
Version 7.1.3
- Core:
- (Segfault with nested generators).
- (PHP hangs when an invalid value is dynamically passed to typehinted by-ref arg).
- (Maximum execution time of n+2 seconds exceed not written in error_log).
- (PHP 7.1 Segfaults within Symfony test suite).
- (Out of bound read - zend_mm_alloc_small).
- (Performance problem with processing large post request). (CVE-2017-11142)
- (array_key_exists fails on arrays created by get_object_vars).
- (NAN check fails on Alpine Linux with musl).
- (Generating phar.phar core dump with gcc ASAN enabled build).
- Apache:
- (Incomplete POST does not timeout but is passed to PHP).
- Date:
- ("new DateTime()" sometimes returns 1 second ago value).
- FPM:
- (php-fpm process accounting is broken with keepalive).
- Hash:
- (gost-crypto hash incorrect if input data contains long 0xFF sequence).
- GD:
- (ReflectionFunction for imagepng is missing last two parameters).
- Mysqlnd:
- (fetch_array broken data. Data more then MEDIUMBLOB).
- Opcache:
- OpenSSL:
- (PHP Fast CGI crashes when reading from a pfx file).
- (Memory leak with openssl_encrypt()).
- Standard:
- (mail.add_x_header causes RFC-breaking lone line feed).
- (substr_count with length=0 broken).
- (is_callable callable name reports misleading value for anonymous classes).
- (PHP on Linux should use /dev/urandom when getrandom is not available).
- Streams:
- (Invalid memory access in zend_inline_hash_func).
- (stream_get_contents maxlength>-1 returns empty string).
Version 7.1.2
- Core:
- Improved GENERATOR_CREATE opcode handler.
- (readlink() returns garbage for UTF-8 paths).
- (Crash when exporting **= in expansion of assign op).
- (bug with symlink related to cyrillic directory).
- (segfault in debug_print_backtrace).
- (arginfo incorrect for unpack).
- (assertion error in debug_zval_dump).
- DOM:
- (getAttributeNodeNS doesn't get xmlns* attributes).
- DTrace:
- (DTrace reported as enabled when disabled).
- FCGI:
- (php-cgi fails to load -c specified php.ini file).
- (PHP_FCGI_CHILDREN is not included in phpinfo()).
- FPM:
- (php-fpm does not close stderr when using syslog).
- GD:
- (Premature failing of XBM reading).
- GMP:
- (test for gmp.h needs to test machine includes).
- Hash:
- Added hash_hkdf() function.
- (environmental build dependency in hash sha3 source).
- Intl:
- (Link use CC instead of CXX).
- LDAP:
- (error/segfault with ldap_mod_replace and opcache).
- MySQLi:
- (leak in mysqli_fetch_object).
- Mysqlnd:
- (segfault on close() after free_result() with mysqlnd).
- Opcache:
- (crash on finish work with phar in cli + opcache).
- OpenSSL:
- (add serial hex to return value array).
- (Compile ext/openssl with openssl 1.1.0 on Win).
- (openssl_decrypt triggers bug in PDO).
- PDO_Firebird:
- (All data are fetched as strings).
- PDO_PgSQL:
- (lastInsertId fails to throw an exception for wrong sequence name).
- Phar:
- (PharData::compress() doesn't close temp file).
- posix:
- (configure script incorrectly checks for ttyname_r).
- Session:
- (session not readable by root in CLI).
- SPL:
- (spl_autoload() crashes when calls magic _call()).
- Standard:
- (closing of fd incorrect when PTS enabled).
- (SoapClient stumbles over WSDL delivered with "Transfer-Encoding: chunked").
- (imap is undefined service on AIX).
- (money_format stores wrong length AIX).
- (intval() with base 0 should detect binary).
- (mail.log = syslog contains double information).
- ZIP:
- (ZipArchive::addGlob ignores remove_all_path option).
Version 7.1.1
-
Core
- (invalid foreach loop hangs script).
- (Adding settype()ed values to ArrayObject results in references).
- ("Invalid opcode 65/16/8" occurs with a variable created with list()).
- (ZEND_MM_BITSET_LEN is "undefined symbol" in zend_bitset.h).
- (unserialized array pointer not advancing).
- (SIG_IGN doesn't work when Zend Signals is enabled).
- (Heap out of bounds read on unserialize in finish_nested_data()). (CVE-2016-10161)
- (NULL Pointer Dereference while unserialize php object). (CVE-2016-10162)
- (Use of uninitialized memory in unserialize()). (CVE-2017-5340)
- (Unserialize use-after-free when resizing object's properties hash table). (CVE-2016-7479)
-
CLI
- (CLI output(japanese) on Windows).
-
COM
- (DOTNET read access violation using invalid codepage).
-
DOM
- (getElementsByTagNameNS filter on default ns).
-
EXIF
- (FPE when parsing a tag format). (CVE-2016-10158)
-
GD
- (Signed Integer Overflow gd_io.c). (CVE-2016-10168)
- (DOS vulnerability in gdImageCreateFromGd2Ctx()). (CVE-2016-10167)
-
mbstring
- (mb_ereg_search_init null pointer dereference).
-
MySQLi
- (Persistent connections don't set $connect_errno).
-
mysqlnd
- Optimized handling of BIT fields - less memory copies and lower memory usage.
- (sporadic segfault with MYSQLI_OPT_INT_AND_FLOAT_NATIVE).
-
opcache
- (Strange behavior of class constants in switch/case block).
- (Method that returns string returns UNKNOWN:0 instead).
- (Segmentation fault in zend_call_function).
- ("SIGFPE Arithmetic exception" in opcache when divide by minus 1).
- (Recursion when a variable is redefined as array).
-
PDO Firebird
- (PDO_FIREBIRD with Firebird 3.0 not work on returning statement).
- Phar:
- (Seg fault when loading hostile phar). (CVE-2017-11147)
- (Memory corruption when loading hostile phar). (CVE-2016-10160)
- (Crash while loading hostile phar archive). (CVE-2016-10159)
-
phpdbg
- (Crash (out of memory) when using run and # command separator).
- (phpdbg shows the wrong line in files with shebang).
-
SQLite3
- Reverted fix for (Unsetting result set may reset other result set).
-
Standard
- (dns_get_record does not populate $additional out parameter).
- (Unserialize context shared on double class lookup).
- (serialize object with __sleep function crash).
- (get_browser function is very slow).
- (Loading browscap.ini at startup causes high memory usage).
- (add subject to mail log).
- (get_defined_functions additional param to exclude disabled functions).
-
zlib
- (deflate_add does not verify that output was not truncated).
Version 7.1.0
- Core:
- Added nullable types.
- Added DFA optimization framework based on e-SSA form.
- Added specialized opcode handlers (e.g. ZEND_ADD_LONG_NO_OVERFLOW).
- Added [] = as alternative construct to list() =.
- Added void return type.
- Added support for negative string offsets in string offset syntax and various string functions.
- Added a form of the list() construct where keys can be specified.
- Implemented safe execution timeout handling, that prevents random crashes after "Maximum execution time exceeded" error.
- Implemented the RFC `Support Class Constant Visibility`.
- Implemented the RFC `Catching multiple exception types`.
- Implemented logging to syslog with dynamic error levels.
- (Support "nmake test" on building extensions by phpize).
- Implemented RFC: Iterable.
- Implemented RFC: Closure::fromCallable (Danack)
- Implemented RFC: Replace "Missing argument" warning with "\ArgumentCountError" exception.
- Implemented RFC: Fix inconsistent behavior of $this variable.
- (Logging of "Internal Zend error - Missing class information" missing class name).
- Fixed memory leak(null coalescing operator with Spl hash).
- (Slow performance when fetching large dataset with mysqli / PDO).
- (Use After Free Vulnerability in unserialize()). (CVE-2016-9936)
- (Ilegal write/read access caused by gdImageAALine overflow).
- (imagefilltoborder stackoverflow on truecolor images). (CVE-2016-9933)
- (Exception::__toString() cause circular references).
- ((Float)"Nano" == NAN).
- (Segfault in __clone > Exception.toString > __get).
- Fixed for (Write out of bounds at number_format).
- Fix pthreads detection when cross-compiling (ffontaine)
- (try/catch not working with two exceptions inside a same operation).
- (segfault on undefined function).
- (PHP hangs if error handler throws while accessing undef const in default value).
- (parse error: Invalid numeric literal).
- (parse_str() without a second argument leads to crash).
- (Heap Buffer Overflow in virtual_popen of zend_virtual_cwd.c).
- (crypt broken when salt is 'too' long).
- (Null pointer deref in zval_delref_p).
- (assign_dim on string doesn't reset hval).
- (Reference is lost after array_slice()).
- (Out of bounds global memory read in BF_crypt triggered by password_verify).
- (Segfault with __get returned by ref).
- (PHP Segfaults when trying to expand an infinite operator).
- TypeError messages for arg_info type checks will now say "must be ... or null" where the parameter or return type accepts null.
- (stream_socket_recvfrom read access violation).
- (Create an Unexpected Object and Don't Invoke __wakeup() in Deserialization).
- (PHP Session Data Injection Vulnerability).
- (memory allocator fails to realloc small block to large one).
- Fixed URL rewriter. It would not rewrite '//example.com/' URL unconditionally. URL rewrite target hosts whitelist is implemented.
- (phpize (on Windows) ignores PHP_PREFIX).
- (getmxrr broken).
- (Caught exception assignment to variables ignores references).
- (Calling an earlier instance of an included anonymous class fatals).
- (previous property undefined in Exception after deserialization).
- (Different references behavior comparing to PHP 5).
- (VERIFY_RETURN type casts visible in finally).
- (Return by reference with finally is not memory safe).
- (Wrong return value if var modified in finally).
- (Memory leak when array altered in destructor).
- (Memory error on $arr[$a] =& $arr[$b] if RHS rehashes).
- Added new constant PHP_FD_SETSIZE.
- Added optind parameter to getopt().
- Added PHP to SAPI error severity mapping for logs.
- (Unable to set --enable-debug on building extensions by phpize on Windows).
- (The destructor is called when an exception is thrown from the constructor).
- Implemented RFC: RNG Fixes.
- Implemented email validation as per RFC 6531.
- (Stack-based buffer overflow vulnerability in virtual_file_ex).
- (HTTP_PROXY is improperly trusted by some PHP libraries and applications).
- (dtrace issue with reflection (failed test)).
- (strange references after recursive function call and "switch" statement).
- (Segmentation fault: RFC list_keys).
- (list() regression).
- (TypeError after Generator function w/declared return type finishes).
- (tempnam() should raise notice if falling back to temp dir).
- Fixed UTF-8 and long path support on Windows.
- (Assignment via string index access on an empty string converts to array).
- (Exceptions can leak temporary variables).
- (It is possible to stiffen child class members visibility).
- (Generators don't participate in cycle GC).
- (Memleak if return in finally block).
- (Missing separation of properties HT in foreach etc).
- (Aborted Generators continue after nested finally).
- (String offset assignment from an empty string inserts null byte).
- (ASCII 0x7F Delete control character permitted in identifiers).
- (Nested try/finally blocks losing return value).
- (Finally leaks on nested exceptions).
- (php-cgi.exe missing UAC manifest).
- Change statement and fcall extension handlers to accept frame.
- Number operators taking numeric strings now emit E_NOTICEs or E_WARNINGs when given malformed numeric strings.
- (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.
- Raise a compile-time warning on octal escape sequence overflow.
- Apache2handler:
- Enable per-module logging in Apache 2.4+.
- BCmath:
- (memcpy negative parameter _bc_new_num_ex).
- Bz2:
- (integer overflow in bzdecompress caused heap corruption).
- (Inadequate error handling in bzread()).
- Calendar:
- Fix integer overflows (Joshua Rogers)
- (cal_days_month() fails for final month of the French calendar).
- (AddressSanitizer: global-buffer-overflow in zif_cal_from_jd).
- CLI Server:
- (Unable to work in root with unicode chars).
- (Built-in webserver does not send Date header).
- COM:
- (Cannot pass parameter 1 by reference).
- (Invalid free in extension trait).
- (COM called from PHP does not return out parameters).
- (DOTNET/COM array parameters broke in PHP7).
- (variant_date_from_timestamp null dereference).
- Curl:
- Implement support for handling HTTP/2 Server Push.
- Add curl_multi_errno(), curl_share_errno() and curl_share_strerror() functions.
- (Heap overflow in curl_escape).
- (size_t overflow lead to heap corruption). (Stas).
- (curl_setopt segfault with empty CURLOPT_HTTPHEADER).
- (CURLINFO_CERTINFO data parsing error).
- Date:
- (DateInterval properties and isset).
- (createFromFormat with 'z' format char results in incorrect time).
- (Inconsistent behavior of the u format char).
- (DateTime parser doesn't set microseconds for "now").
- (microseconds are missing in DateTime class).
- (microseconds in DateInterval are missing).
- (DateTime::createFromFormat() U after u nukes microtime).
- (Allow DateTime modification with subsecond items).
- (General DateTime improvments needed for microseconds to become useful).
- (timelib_meridian doesn't parse dots correctly).
- (DateTime constructor does not initialise microseconds property).
- (Use After Free in PHP7 unserialize()).
- (Memcpy negative size parameter php_resolve_path).
- (DateTime::createFromFormat 'U' with pre 1970 dates fails parsing).
- 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.
- 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.
- Export date_get_interface_ce() for extension use.
- (strtotime seems to use both sunday and monday as start of week).
- Dba:
- (Cannot fetch multiple values with group in ini file).
- 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.
- DOM:
- (missing NULL check in dom_document_save_html).
- (DOM document dangling reference).
- Invalid schema or RelaxNG validation contexts will throw an instance of Error instead of resulting in a fatal error.
- 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.
- Attempting to read an invalid or write to a readonly property will throw an instance of Error instead of resulting in a fatal error.
- DTrace:
- Disabled PHP call tracing by default (it makes significant overhead). This may be enabled again using envirionment variable USE_ZEND_DTRACE=1.
- EXIF:
- (Samsung picture thumb not read (zero size)).
- (Memory Leakage In exif_process_IFD_in_TIFF).
- (Out of bound read in exif_process_IFD_in_MAKERNOTE).
- (NULL Pointer Dereference in exif_process_user_comment).
- Filter:
- (Bad filter for the flags FILTER_FLAG_NO_RES_RANGE and FILTER_FLAG_NO_PRIV_RANGE).
- (default option ignored when object passed to int filter).
- (FILTER_FLAG_NO_RES_RANGE does not cover whole 127.0.0.0/8 range).
- FPM:
- (using --allow-to-run-as-root should ignore missing user).
- FTP:
- (Cannot upload file using ftp_put to FTPES with require_ssl_reuse).
- (Option to ignore the returned FTP PASV address).
- GD:
- (Integer overflow in imageline() with antialiasing).
- (imagescale() is not affected by, but affects imagesetinterpolation()).
- (Integer overflow in gdImageScaleBilinearPalette()).
- (Stack Buffer Overflow in GD dynamicGetbuf).
- (imagettftext broken on transparent background w/o alphablending).
- (Integer Overflow in gdImageWebpCtx of gd_webp.c).
- (imagettfbbox gives incorrect values for bounding box).
- (imagegd2() ignores 3rd param if 4 are given).
- (imagegd2() writes wrong chunk sizes on boundaries).
- (imagegd2(): unrecognized formats may result in corrupted files).
- (imagecreatefromgd2() may leak memory).
- (imagetruecolortopalette: white is duplicated in palette).
- (imagecopy does not support 1bit transparency on truecolor images).
- (imagecopy() loses single-color transparency on palette images).
- (possible resource leaks in _php_image_convert()).
- (imagesetstyle() causes OOB read for empty $styles).
- (select_colors write out-of-bounds).
- (imagegammacorrect allows arbitrary write access).
- (imagetypes function won't advertise WEBP support).
- (imagearc() ignores thickness for full arcs).
- (500 Server Error but page is fully rendered).
- (broken transparency of imagearc for truecolor in blendingmode).
- (gdImageTrueColorToPaletteBody allows arbitrary write/read access).
- (imagegif/output out-of-bounds access).
- (Integer overflow error within _gdContributionsAlloc()).
- (Ilegal write/read access caused by gdImageAALine overflow).
- (imagecropauto out-of-bounds access).
- (imagecreatefromjpeg fails on selfie).
- (Thick styled lines have scrambled patterns).
- (XBM images require width to be multiple of 8).
- (imagefilledpolygon doesn't draw horizontal line).
- Hash:
- Added SHA3 fixed mode algorithms (224, 256, 384, and 512 bit).
- Added SHA512/256 and SHA512/224 algorithms.
- iconv:
- (iconv_substr returns false for empty strings).
- IMAP:
- (Integer Overflow in "_php_imap_mail" leads to crash).
- An email address longer than 16385 bytes will throw an instance of Error instead of resulting in a fatal error.
- Interbase:
- (Fails to find firebird headers as don't use fb_config output).
- Intl:
- (add locale length check).
- (add mitigation for ICU int overflow).
- (grapheme_*() is not Unicode compliant on CR LF sequence).
- (add locale length check).
- (Segfault when instantiating class that extends IntlCalendar and adds a property).
- (Locale::lookup() / locale_lookup() hangs if no match found).
- Partially fixed (idn_to_ascii for UTS #46 incorrect for long domain names).
- (locale_accept_from_http out-of-bounds access).
- 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.
- 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.
- Added IntlTimeZone::getWindowsID() and IntlTimeZone::getIDForWindowsID().
- (IntlDateFormatter formatObject returns wrong utf8 value).
- (IntlDateFormatter formatObject returns wrong value when time style is NONE).
- JSON:
- Introduced encoder struct instead of global which fixes bugs and related to pretty print indentation.
- (Segfault with throwing JsonSerializable).
- Implemented earlier return when json_encode fails, fixes bugs (Stacking exceptions thrown by JsonSerializable) and (On recursion error, json_encode can eat up all system memory).
- ("_empty_" key in objects).
- Exported JSON parser API including json_parser_method that can be used for implementing custom logic when parsing JSON.
- 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.
- LDAP:
- Providing an unknown modification type to ldap_batch_modify() will now throw an instance of Error instead of resulting in a fatal error.
- Mbstring:
- (Null pointer dereference in mb_eregi).
- (mb_convert_variables() cannot detect recursion).
- (mbstring.internal_encoding doesn't inherit default_charset).
- (mb_substr only takes 32-bit signed integer).
- (`mb_ereg` does not clear the `$regs` parameter on failure).
- (mb_ereg_search raises a warning if a match zero-width).
- (mb_ereg_search increments search position when a match zero-width).
- (mb_ereg_search_setpos does not accept a string's last position).
- (`mb_ereg` causes buffer overflow on regexp compile error).
- Deprecated mb_ereg_replace() eval option.
- (mb_ereg should reject ill-formed byte sequence).
- (mb_ereg_replace - mbc_to_code (oniguruma) - oob read access).
- (Use-After-Free in MBString (search_re)).
- 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.
- Mcrypt:
- Deprecated ext/mcrypt.
- (Heap Overflow due to integer overflows).
- , bug (In correct casting from size_t to int lead to heap overflow in mdecrypt_generic).
- mcrypt_encrypt() and mcrypt_decrypt() will throw an instance of Error instead of resulting in a fatal error if mcrypt cannot be initialized.
- Mysqli:
- Attempting to read an invalid or write to a readonly property will throw an instance of Error instead of resulting in a fatal error.
- Mysqlnd:
- (Add missing mysqlnd.* parameters to php.ini-*).
- (Segfault when EXPLAIN with "Unknown column" error when using MariaDB).
- (mysqli_get_host_info() wrong output).
- OCI8:
- (Bind reference overwritten on PHP 7).
- Fixed invalid handle error with Implicit Result Sets.
- (Binding null values triggers ORA-24816 error).
- ODBC:
- (odbc_errormsg returns trash, always 513 bytes).
- Opcache:
- (Segfaults when conditionally declared class and function have the same name).
- (check cached files permissions)
- (Memory leak in zend_accel_blacklist_update_regexp() function).
- (Typo in opcache error message).
- (Infinite loop while parsing a file with opcache enabled).
- (Opcache restart with kill_all_lockers does not work).
- OpenSSL:
- (openssl_pkey_new() generates wrong pub/priv keys with Diffie Hellman).
- (crash in openssl_random_pseudo_bytes function).
- (Invalid path SNI_server_certs causes segfault).
- (ext/openssl build failure with OpenSSL 1.1.0).
- Bumped a minimal version to 1.0.1.
- Dropped support for SSL2.
- (Add elliptic curve support for OpenSSL).
- (Added AEAD support [CCM and GCM modes] to openssl_encrypt and openssl_decrypt).
- Implemented error storing to the global queue and cleaning up the OpenSSL error queue (resolves bugs and ).
- Pcntl:
- Implemented asynchronous signal handling without TICKS.
- Added pcntl_signal_get_handler() that returns the current signal handler for a particular signal. Addresses FR .
- Add siginfo to pcntl_signal() handler args (Bishop Bettini, David Walker)
- PCRE:
- (Segmentation fault on pcre_replace_callback).
- (preg_*() may leak memory).
- (A use-after-free in zend allocator management).
- (Bundled PCRE doesn't compile because JIT isn't supported on s390).
- (preg_match missing group names in matches).
- Downgraded to PCRE 8.38.
- (Memleak in jit_stack).
- (mail fails with invalid argument).
- Upgraded to PCRE 8.39.
- PDO:
- (Invalid memory access when using persistent PDO connection).
- (Memory leak in PDO persistent connection handling).
- (call to empty() on NULL result using PDO::FETCH_LAZY returns false).
- PDO_DBlib:
- (Never quote values as raw binary data).
- Allow \PDO::setAttribute() to set query timeouts.
- Handle SQLDECIMAL/SQLNUMERIC types, which are used by later TDS versions.
- Add common PDO test suite.
- Free error and message strings when cleaning up PDO instances.
- (\PDOStatement::nextRowset() should succeed when all rows in current rowset haven't been fetched).
- Ignore potentially misleading dberr values.
- Implemented stringify 'uniqueidentifier' fields.
- PDO_Firebird:
- , , (Memory corruption in bindParam).
- (Integer returned as a 64bit integer on X86_64).
- PDO_pgsql:
- (PDO statement fails to throw exception).
- (Segmentation fault when binding parameters on a query without placeholders).
- (Postgres PDO lastInsertId() should work without specifying a sequence).
- Phar:
- (Out of bound when verify signature of zip phar in phar_parse_zipfile).
- (Out of bound when verify signature of tar phar in phar_parse_tarfile).
- phpdbg:
- Added generator command for inspection of currently alive generators.
- Postgres:
- (Incorrect SQL generated for pg_copy_to()).
- (pg_last_notice() is needed to get all notice messages).
- (Allow pg_fetch_all() to index numerically).
- Readline:
- (readline_redisplay crashes php).
- Reflection:
- Undo backwards compatiblity break in ReflectionType->__toString() and deprecate via documentation instead.
- Reverted prepending \ for class names.
- (invoke() and invokeArgs() static method calls should match). (cmb).
- Add ReflectionNamedType::getName(). This method should be used instead of ReflectionType::__toString()
- Prepend \ for class names and ? for nullable types returned from ReflectionType::__toString().
- (ReflectionType::__toString crashes with iterable).
- (ReflectionClass::export doesn't handle array constants).
- 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.
- (ReflectionProperty::getValue() doesn't fail if object doesn't match type).
- Session:
- (session_unset() empties values from all variables in which is $_session stored).
- (session_destroy null dereference in ps_files_path_create).
- (Session does not report invalid uid for files save handler).
- (SID always return "name=ID", even if session cookie exist).
- Implemented session_gc() (Yasuo) https://wiki.php.net/rfc/session-create-id
- Implemented session_create_id() (Yasuo) https://wiki.php.net/rfc/session-gc
- Implemented RFC: Session ID without hashing. (Yasuo) https://wiki.php.net/rfc/session-id-without-hashing
- (ps_files_cleanup_dir Buffer overflow).
- 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.
- 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.
- (Use After Free in unserialize() with Unexpected Session Deserialization).
- Improved fix for bug (Empty session IDs do still start sessions).
- (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.
- (session_regenerate_id() must close opened session on errors).
- SimpleXML:
- (NULL pointer dereference in SimpleXMLElement::asXML()).
- (SimpleXML isset/unset do not respect namespace).
- (Null coalescing operator doesn't behave as expected with SimpleXMLElement).
- (Using global var doesn't work while accessing SimpleXML element).
- Creating an unnamed or duplicate attribute will throw an instance of Error instead of resulting in a fatal error.
- SNMP:
- (php_snmp_parse_oid integer overflow in memory allocation).
- (Use After Free Vulnerability in SNMP with GC and unserialize()).
- Soap:
- (SoapClient::__setSoapHeaders doesn't overwrite SOAP headers).
- (Segfault (Regression for )).
- (SoapServer reports Bad Request when gzipped).
- (Nested object in "any" element overwrites other fields).
- (Peer verification fails when using a proxy with SoapClient).
- (Soap Server Member variables reference bug).
- (Using references in arrays doesn't work like expected).
- SPL:
- (Reproducible crash with GDB backtrace).
- (Segfault on clone on splFileObject).
- (Missing type check when unserializing SplArray).
- (SplFileObject::getCsvControl does not return the escape character).
- (AppendIterator segfault with closed generator).
- Attempting to clone an SplDirectory object will throw an instance of Error instead of resulting in a fatal error.
- Calling ArrayIterator::append() when iterating over an object will throw an instance of Error instead of resulting in a fatal error.
- (GlobIterator throws LogicException).
- SQLite3:
- Update to SQLite 3.15.1.
- (Unsetting result set may reset other result set).
- (2147483647 is fetched as string).
- (Spurious warning when exception is thrown in user defined function).
- (SQLite should allow opening with empty filename).
- (Clearing bindings on an SQLite3 statement doesn't work).
- (Upgraded bundled SQLite lib to 3.9.2).
- Standard:
- (HTTP stream wrapper should ignore HTTP 100 Continue).
- (Scope not inherited by eval in assert()).
- (parse_url return wrong hostname).
- (passing additional_parameters causes mail to fail).
- (passing additional_parameters causes mail to fail).
- (Accessing a private constant using constant() creates an exception AND warning).
- (get_browser() incorrectly parses entries with "+" sign).
- (Negative ftruncate() on php://memory exhausts memory).
- (substr_compare NULL length interpreted as 0).
- (getimagesize returning FALSE on valid jpg).
- (unset array item in array_walk_recursive cause inconsistent array).
- (array_walk_recursive move internal pointer).
- (Exchanging array during array_walk -> memory errors).
- (Use After Free Vulnerability in array_walk()/ array_walk_recursive()).
- (array_walk + array_replace_recursive create references from nothing).
- (CSV fields incorrectly split if escape char followed by UTF chars).
- Implemented RFC: More precise float values.
- array_multisort now uses zend_sort instead zend_qsort.
- (readfile() mangles files larger than 2G).
- 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.
- Calling forward_static_call() outside of a class scope will now throw an instance of Error instead of resulting in a fatal error.
- Added is_iterable() function.
- (Heap overflow through proc_open and $env parameter).
- (long2ip() doesn't accept integers in strict mode).
- (Add an option to pass a custom stream context to get_headers()).
- Additional validation for parse_url() for login/pass components).
- (Provide a way to fetch the current environment variables).
- unpack() function accepts an additional optional argument $offset.
- stream context socket option tcp_nodelay (Joe)
- Streams:
- (php_user_filter::$stream is not set to the stream the filter is working on).
- (stream_set_blocking doesn't work).
- (Out-of-bound read in php_stream_filter_create).
- (Multiple small packets send for HTTP request).
- (ftps:// opendir wrapper data channel encryption fails with IIS FTP 7.5, 8.5).
- (Missing SKIP_ONLINE_TESTS checks).
- (Problems with the ftps wrapper).
- (opendir() does not work with ftps:// wrapper).
- (opendir() with ftp:// attempts to open data stream for non-existent directories).
- (ftps:// wrapper is vulnerable to protocol downgrade attack).
- (stream_socket_get_name crashes).
- (Stream socket with remote address leads to a segmentation fault).
- sysvshm:
- (shm_attach null dereference).
- Tidy:
- Implemented support for libtidy 5.0.0 and above.
- Creating a tidyNode manually will now throw an instance of Error instead of resulting in a fatal error.
- Wddx:
- (NULL Pointer Dereference in WDDX Packet Deserialization with PDORow). (CVE-2016-9934)
- (WDDX Packet Injection Vulnerability in wddx_serialize_value()).
- (wddx_deserialize allows illegal memory access).
- (wddx_deserialize null dereference).
- (wddx_deserialize null dereference with invalid xml).
- (wddx_deserialize null dereference in php_wddx_pop_element).
- (wddx_deserialize use-after-free).
- (Out-Of-Bounds Read in php_wddx_push_element).
- (boolean always deserialized as "true").
- A circular reference when serializing will now throw an instance of Error instead of resulting in a fatal error.
- XML:
- (malformed XML causes fault).
- (_xml_startElementHandler() segmentation fault).
- (SEGV on unknown address zif_xml_parse).
- XMLRPC:
- (xmlrpc_encode() unexpected output after referencing array elements).
- (heap-buffer-overflow (write) simplestring_addn simplestring.c).
- A circular reference when serializing will now throw an instance of Error instead of resulting in a fatal error.
- Zip:
- (impossible to compile php with zip support).
- (NULL Pointer dereference in zend_virtual_cwd).
- (Stack-based buffer overflow vulnerability in php_stream_zip_opener).
- ZipArchive::addGlob() will throw an instance of Error instead of resulting in a fatal error if glob support is not available.
Version 7.0.33
- Core:
- (Segfault when using convert.quoted-printable-encode filter).
- IMAP:
- (null pointer dereference in imap_mail).
- (imap_open allows to run arbitrary shell commands via mailbox parameter). (CVE-2018-19518)
- Phar:
- (PharData always creates new files with mode 0666).
- (Heap Buffer Overflow (READ: 4) in phar_parse_pharfile). (CVE-2018-20783)
Version 7.0.32
- Apache2:
- (XSS due to the header Transfer-Encoding: chunked). (CVE-2018-17082)
Version 7.0.31
- Exif:
- (Int Overflow lead to Heap OverFlow in exif_thumbnail_extract of exif.c). (CVE-2018-14883)
- (heap-buffer-overflow (READ of size 48) while reading exif data). (CVE-2018-14851)
- Win32:
- (windows linkinfo lacks openbasedir check). (CVE-2018-15132)
Version 7.0.30
- Exif:
- (Heap Buffer Overflow (READ: 1786) in exif_iif_add_value). (CVE-2018-10549)
- iconv:
- (stream filter convert.iconv leads to infinite loop on invalid sequence). (CVE-2018-10546)
- LDAP:
- (Malicious LDAP-Server Response causes Crash). (CVE-2018-10548)
- Phar:
- (fix for CVE-2018-5712 may not be complete). (CVE-2018-10547)
Version 7.0.29
- FPM:
- (Dumpable FPM child processes allow bypassing opcache access controls). (CVE-2018-10545)
Version 7.0.28
- Standard:
- (stack-buffer-overflow while parsing HTTP response). (CVE-2018-7584)
Version 7.0.27
- CLI Server:
- (Random "Invalid request (unexpected EOF)" using a router script).
- Core:
- (PHP seems incompatible with OneDrive files on demand).
- (Segmentation fault in 7.1.12 and 7.0.26).
- FPM:
- (libxml_disable_entity_loader setting is shared between requests).
- GD:
- (Potential infinite loop in gdImageCreateFromGifCtx). (CVE-2018-5711)
- Opcache:
- (Interned strings buffer overflow may cause crash).
- PCRE:
- (preg_last_error not returning error code after error).
- Phar:
- (Reflected XSS in .phar 404 page). (CVE-2018-5712)
- Standard:
- (Inappropriately parsing HTTP response leads to PHP segment fault). (CVE-2018-14884)
- (accept EFAULT in addition to ENOSYS as indicator that getrandom() is missing).
- Zip:
- (Segfault with libzip 1.3.1).
Version 7.0.26
- Core:
- (Crash when modifing property name in __isset for BP_VAR_IS).
- (mmap/munmap trashing on unlucky allocations).
- CLI:
- (Builtin webserver crash after chdir in a shutdown function).
- Enchant:
- (enchant_broker_get_path crashes if no path is set).
- (Enchant still reports version 1.1.0).
- Exif:
- (Exif extension has built in revision version).
- GD:
- (imagerotate may alter image dimensions).
- (Wrong reflection on imagewebp).
- intl:
- (UConverter::setDestinationEncoding changes source instead of destination).
- interbase:
- (Incorrect reflection for ibase_[p]connect).
- Mysqli:
- (Wrong reflection for mysqli_fetch_all function).
- OCI8:
- Opcache:
- (Warning Internal error: wrong size calculation).
- OpenSSL:
- (openssl_x509_parse leaks memory).
- (Wrong reflection for openssl_open function).
- PGSQL:
- (Default link incorrectly cleared/linked by pg_close()).
- SOAP:
- (Wrong reflection on SoapClient::__setSoapHeaders).
- Zlib:
- (Wrong reflection on inflate_init and inflate_add).
Version 7.0.25
- Core:
- (Null pointer dereference in zend_mm_alloc_small()).
- (infinite loop when printing an error-message).
- (Incorrect token formatting on two parse errors in one request).
- (Segfault when calling is_callable on parent).
- (debug info of Closures of internal functions contain garbage argument names).
- Apache2Handler:
- (error: 'zend_hash_key' has no member named 'arKey' in apache2handler).
- Date:
- (Out-Of-Bounds Read in timelib_meridian()). (CVE-2017-16642)
- Intl:
- (The parameter of UConverter::getAliases() is not optional).
- mcrypt:
- (arcfour encryption stream filter crashes php).
- OCI8:
- Fixed incorrect reference counting.
- PCRE:
- (applied upstream patch for CVE-2016-1283).
- litespeed:
- (Binary directory doesn't get created when building only litespeed SAPI).
- (Missing program prefix and suffix).
- SPL:
- (SplDoublyLinkedList::setIteratorMode masks intern flags).
Version 7.0.24
- Core:
- (run-tests.php issues with EXTENSION block).
- BCMath:
- (bcpowmod() fails if scale != 0).
- (BC math handles minus zero incorrectly).
- (bcpowmod() may return 1 if modulus is 1).
- (bcpowmod() misbehaves for non-integer base or modulus).
- CLI server:
- (Built-in server truncates headers spanning over TCP packets).
- CURL:
- (OpenSSL support not detected).
- GD:
- (gdImageGrayScale() may produce colors).
- (libgd/gd_interpolation.c:1786: suspicious if ?).
- Gettext:
- (textdomain(null) throws in strict mode).
- Intl:
- (IntlGregorianCalendar doesn't have constants from parent class).
- PDO_OCI:
- (PDO_PCO with PHP-FPM: OCI environment initialized before PHP-FPM sets it up).
- SPL:
- (incorrect behavior of AppendIterator::append in foreach loop).
- Standard:
- (gethostname fails if your host name is 64 chars long).
Version 7.0.23
- Core:
- (Segfault in scanner on INF number).
- (null deref and segfault in zend_generator_resume()).
- (html_errors=1 breaks unhandled exceptions).
- (NAN comparison).
- cURL:
- (Fixed finding CURL on systems with multiarch support).
- Date:
- (Null Pointer Dereference in timelib_time_clone).
- Intl:
- (Wrong reflection on some locale_* functions).
- Mbstring:
- (Segmentation fault mb_strcut with HTML-ENTITIES encoding).
- (mb_convert_kana() does not convert iteration marks).
- (Wrong reflection on mb_eregi_replace).
- MySQLi:
- (PHP crashes when calling mysqli_result::fetch_object with an abstract class).
- OCI8:
- Expose oci_unregister_taf_callback() (Tianfang Yang)
- phar:
- (include_path has a 4096 char limit in some cases).
- Reflection:
- (null pointer dereference in _function_string).
- Session:
- (SID constant created with wrong module number).
- SimpleXML:
- (nullpointer deref in simplexml_element_getDocNamespaces).
- SPL:
- (spl_autoload_unregister can't handle spl_autoload_functions results).
- (Unserialize ArrayIterator broken).
- (Crash in recursive iterator destructors).
- Standard:
- (unpack with X* causes infinity loop).
- (heap-use-after-free when unserializing invalid array size). (CVE-2017-12932)
- (A Denial of Service Vulnerability was found when performing deserialization).
- WDDX:
- (WDDX uses wrong decimal seperator).
- XMLRPC:
- (Incorrect xmlrpc serialization for classes with declared properties).
Version 7.0.22
- Core:
- (Loading PHP extension with already registered function name leads to a crash).
- (parse_url() borken when query string contains colon).
- (Unary operator expected error on some systems).
- (Use After Free in unserialize() SplFixedArray).
- (fixed incorrect poll.h include).
- (fixed incorrect errno.h include).
- Date:
- (property_exists returns true on unknown DateInterval property).
- OCI8:
- (Integer overflow in oci_bind_array_by_name).
- Opcache:
- (Opcache overwrites argument of GENERATOR_RETURN within finally).
- PDO:
- (PDOStatement::debugDumpParams() truncates query).
- SPL:
- (PHP freezes with AppendIterator).
- SQLite3:
- (SQLite3::__construct() produces "out of memory" exception with invalid flags).
- Wddx:
- (huge memleak when wddx_unserialize).
- (wddx parsing empty boolean tag leads to SIGSEGV). (CVE-2017-11143)
- zlib:
- (dictionary option of inflate_init() does not work).
Version 7.0.21
- Core:
- (Multiple [PATH=] and [HOST=] sections not properly parsed).
- (Undefined constants in array properties result in broken properties).
- Fixed misparsing of abstract unix domain socket names.
- (Unserialize Heap Use-After-Free (READ: 1) in zval_get_type). (CVE-2017-12934)
- (Heap buffer overread (READ: 1) finish_nested_data from unserialize). (CVE-2017-12933)
- (PHP INI Parsing Stack Buffer Overflow Vulnerability). (CVE-2017-11628)
- (wddx_deserialize() heap out-of-bound read via php_parse_date()). (CVE-2017-11145)
- DOM:
- (References to deleted XPath query results).
- GD:
- (Buffer over-read into uninitialized memory). (CVE-2017-7890)
- Intl:
- (Stack Buffer Overflow in msgfmt_parse_message). (CVE-2017-11362)
- (Wrong reflection on Collator::getSortKey and collator_get_sort_key).
- (grapheme_strpos illegal memory access).
- Mbstring:
- Add oniguruma upstream fix (CVE-2017-9224, CVE-2017-9226, CVE-2017-9227, CVE-2017-9228, CVE-2017-9229)
- OCI8:
- Opcache:
- (Segfault with opcache.memory_protect and validate_timestamp).
- OpenSSL:
- (negative-size-param (-1) in memcpy in zif_openssl_seal()). (CVE-2017-11144)
- PCRE:
- (Segmentation fault in PHP7.1.1(compiled using the bundled PCRE library)).
- PDO_OCI:
- Support Instant Client 12.2 in --with-pdo-oci configure option.
- Reflection:
- (Segfault when cast Reflection object to string with undefined constant).
- SPL:
- (null coalescing operator failing with SplFixedArray).
- Standard:
- (Invalid Reflection signatures for random_bytes and random_int).
- (Heap buffer overflow in substr).
- FTP:
- (ftp:// wrapper ignores context arg).
- PHAR:
- (Phar::__construct reflection incorrect).
- SOAP:
- (Incorrect conversion array with WSDL_CACHE_MEMORY).
- Streams:
- (stream_socket_get_name() returns '\0').
Version 7.0.20
- Core:
- (crash (SIGSEGV) in _zend_hash_add_or_update_i).
- (SIGILL in ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST).
- intl:
- (wrong reflection on Collator::sortWithSortKeys).
- MySQLi:
- (mysqli::change_user() doesn't accept null as $database argument w/strict_types).
- Opcache:
- (SIGSEGV with opcache.revalidate_path enabled).
- phar:
- (Phar::webPhar() does not handle requests sent through PUT and DELETE method).
- Standard:
- (win32/sendmail.c anchors CC header but not BCC).
- xmlreader:
- (Wrong reflection on XMLReader::expand).
Version 7.0.19
- Core:
- (Null coalescing operator fails for undeclared static class properties).
- (Endless loop bypassing execution time limit).
- (stream_select() is broken on Windows Nanoserver).
- (php-cgi.exe crash on facebook callback).
- Patch for bug was reverted.
- Date:
- (Wrong reflection on DateTimeZone::getTransitions).
- (add constant for RFC7231 format datetime).
- DOM:
- (Wrong reflection on DOMNode::cloneNode).
- Fileinfo:
- (syntax error compile error in libmagic/apprentice.c).
- GD:
- (compile fails on solaris 11 with system gd2 library).
- intl:
- (wrong reflection for Normalizer methods).
- (wrong reflection for Locale methods).
- MySQLi:
- (mysqli_connect adding ":3306" to $host if $port parameter not given).
- MySQLnd:
- Added support for MySQL 8.0 types.
- (Invalid free of persistent results on error/connection loss).
- OpenSSL:
- (null character not allowed in openssl_pkey_get_private).
- (Segfault in openssl_pkey_new when generating DSA or DH key).
- (openssl_x509_parse fails to parse ASN.1 UTCTime without seconds).
- Added OpenSSL 1.1.0 support.
- phar:
- (phar method parameters reflection correction).
- Standard:
- (Reflection information for ini_get_all() is incomplete).
- (setcookie allows max-age to be negative).
- Streams:
- (Remote socket URI with unique persistence identifier broken).
- SQLite3:
- (incorrect reflection for SQLite3::enableExceptions).
Version 7.0.18
- Core:
- (falsely exits with "Out of Memory" when using USE_ZEND_ALLOC=0).
- (Leak with instance method calling static method with referenced return).
- (Build problems after 7.0.17 release: undefined reference to `isfinite').
- (yield fromLABEL is over-greedy).
- Apache:
- Reverted patch for bug , fixes bug .
- Date:
- (Swatch time value incorrect for dates before 1970).
- DOM:
- (LIBXML_NOWARNING flag ingnored on loadHTML*).
- iconv:
- (iconv fails to fail on surrogates).
- OpenSSL:
- (fwrite() on non-blocking SSL sockets doesn't work).
- PDO MySQL:
- (Expose MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT to PDO interface).
- Streams:
- (Correctly fail on invalid IP address ports).
- Zlib:
- (deflate_add can allocate too much memory).
Version 7.0.17
- Core:
- (PHP 7.1 Segfaults within Symfony test suite).
- (Out of bound read - zend_mm_alloc_small).
- (Performance problem with processing large post request). (CVE-2017-11142)
- (array_key_exists fails on arrays created by get_object_vars).
- (NAN check fails on Alpine Linux with musl).
- (is_infinite(-INF) returns false).
- (Generating phar.phar core dump with gcc ASAN enabled build).
- Apache:
- (Incomplete POST does not timeout but is passed to PHP).
- Date:
- (Relative datetime format ignores weekday on sundays only).
- (DateTime wrong when date string is negative).
- (wrong timestamp when call setTimeZone multi times with UTC offset).
- (first/last day of' flag is not being reset).
- ($date->modify('Friday this week') doesn't return a Friday if $date is a Sunday).
- (wrong day when using "this week" in strtotime).
- FPM:
- (php-fpm process accounting is broken with keepalive).
- Hash:
- (gost-crypto hash incorrect if input data contains long 0xFF sequence).
- GD:
- (ReflectionFunction for imagepng is missing last two parameters).
- Mysqlnd:
- (fetch_array broken data. Data more then MEDIUMBLOB).
- Opcache:
- (if statement says true to a null variable).
- (Segfault with list).
- OpenSSL:
- (PHP Fast CGI crashes when reading from a pfx file).
- Standard:
- (ReflectionFunction incorrectly reports the number of arguments).
- (mail.add_x_header causes RFC-breaking lone line feed).
- (is_callable callable name reports misleading value for anonymous classes).
- (PHP on Linux should use /dev/urandom when getrandom is not available).
- Streams:
- (Invalid memory access in zend_inline_hash_func).
- (stream_get_contents maxlength>-1 returns empty string).
Version 7.0.16
- Core:
- (zend_print_flat_zval_r doesn't consider reference).
- (Crash when exporting **= in expansion of assign op).
- (segfault in debug_print_backtrace).
- (assertion error in debug_zval_dump).
- DOM:
- (getAttributeNodeNS doesn't get xmlns* attributes).
- DTrace:
- (DTrace reported as enabled when disabled).
- FPM:
- (double fastcgi_end_request on max_children limit).
- (php-fpm does not close stderr when using syslog).
- GD:
- (Premature failing of XBM reading).
- GMP:
- (test for gmp.h needs to test machine includes).
- Intl:
- (Link use CC instead of CXX).
- LDAP:
- (error/segfault with ldap_mod_replace and opcache).
- MySQLi:
- (leak in mysqli_fetch_object).
- Mysqlnd:
- (segfault on close() after free_result() with mysqlnd).
- Opcache:
- (crash on finish work with phar in cli + opcache).
- OpenSSL:
- (add serial hex to return value array).
- PDO_Firebird:
- (All data are fetched as strings).
- PDO_PgSQL:
- (lastInsertId fails to throw an exception for wrong sequence name).
- Phar:
- (PharData::compress() doesn't close temp file).
- posix:
- (configure script incorrectly checks for ttyname_r).
- Session:
- (session not readable by root in CLI).
- SPL:
- (spl_autoload() crashes when calls magic _call()).
- Standard:
- (closing of fd incorrect when PTS enabled).
- (SoapClient stumbles over WSDL delivered with "Transfer-Encoding: chunked").
- (imap is undefined service on AIX).
- (money_format stores wrong length AIX).
- ZIP:
- (ZipArchive::addGlob ignores remove_all_path option).
Version 7.0.15
- Core:
- (invalid foreach loop hangs script).
- ("Invalid opcode 65/16/8" occurs with a variable created with list()).
- (Logging of "Internal Zend error - Missing class information" missing class name).
- (unserialized array pointer not advancing).
- (Heap out of bounds read on unserialize in finish_nested_data()). (CVE-2016-10161)
- (NULL Pointer Dereference while unserialize php object). (CVE-2016-10162)
- (Use of uninitialized memory in unserialize()). (CVE-2017-5340)
- (Unserialize use-after-free when resizing object's properties hash table). (CVE-2016-7479)
- (Use After Free in unserialize()).
- (Type Confusion in Object Deserialization).
- COM:
- (DOTNET read access violation using invalid codepage).
- DOM:
- (getElementsByTagNameNS filter on default ns).
- EXIF:
- (FPE when parsing a tag format). (CVE-2016-10158)
- GD:
- (Signed Integer Overflow gd_io.c). (CVE-2016-10168)
- (DOS vulnerability in gdImageCreateFromGd2Ctx()). (CVE-2016-10167)
- GMP:
- (GMP Deserialization Type Confusion Vulnerability).
- Mysqli:
- (Persistent connections don't set $connect_errno).
- Mysqlnd:
- Fixed issue with decoding BIT columns when having more than one rows in the result set. 7.0+ problem.
- (sporadic segfault with MYSQLI_OPT_INT_AND_FLOAT_NATIVE).
- PCRE:
- (preg_*() may leak memory).
- PDO_Firebird:
- (PDO_FIREBIRD with Firebird 3.0 not work on returning statement).
- Phar:
- (Seg fault when loading hostile phar). (CVE-2017-11147)
- (Memory corruption when loading hostile phar). (CVE-2016-10160)
- (Crash while loading hostile phar archive). (CVE-2016-10159)
- Phpdbg:
- (phpdbg without option never load .phpdbginit at startup).
- Fixed issue getting executable lines from custom wrappers.
- (phpdbg shows the wrong line in files with shebang).
- Reflection:
- (ReflectionObject memory leak).
- Streams:
- (php_user_filter::$stream is not set to the stream the filter is working on).
- SQLite3:
- Reverted fix for (Unsetting result set may reset other result set).
- Standard:
- (dns_get_record does not populate $additional out parameter).
- (Unserialize context shared on double class lookup).
- (serialize object with __sleep function crash).
- (get_browser function is very slow).
- (Loading browscap.ini at startup causes high memory usage).
- (get_defined_functions additional param to exclude disabled functions).
- Zlib:
- (deflate_add does not verify that output was not truncated).
Version 7.0.14
- Core:
- Fixed memory leak(null coalescing operator with Spl hash).
- (Slow performance when fetching large dataset with mysqli / PDO).
- (Use After Free Vulnerability in unserialize()). (CVE-2016-9936)
- Calendar:
- Date:
- (DateInterval properties and isset).
- DTrace:
- Disabled PHP call tracing by default (it makes significant overhead). This may be enabled again using envirionment variable USE_ZEND_DTRACE=1.
- JSON:
- (php_json_encode depth issue).
- Mysqlnd:
- (Add missing mysqlnd.* parameters to php.ini-*).
- ODBC:
- (odbc_errormsg returns trash, always 513 bytes).
- Opcache:
- (check cached files permissions).
- (Logging for opcache has an empty file name).
- PCRE:
- (Segmentation fault on pcre_replace_callback).
- (A use-after-free in zend allocator management).
- PDO_Firebird:
- , , (Memory corruption in bindParam).
- Phar:
- (Phar::isValidPharFilename illegal memory access).
- Postgres:
- (Incorrect SQL generated for pg_copy_to()).
- Soap:
- (SoapClient::__setSoapHeaders doesn't overwrite SOAP headers).
- (Segfault (Regression for )).
- SPL:
- (Reproducible crash with GDB backtrace).
- SQLite3:
- (Unsetting result set may reset other result set).
- Standard:
- (HTTP stream wrapper should ignore HTTP 100 Continue).
- (version_compare illegal write access).
- Wddx:
- (Invalid read when wddx decodes empty boolean element). (CVE-2016-9935)
- XML:
- (malformed XML causes fault).
Version 7.0.13
- Core:
- (Exception::__toString() cause circular references).
- (parse_str() without a second argument leads to crash).
- (Autoload with Opcache allows importing conflicting class name to namespace).
- ((Sub-)Namespaces unexpected behaviour).
- Fix pthreads detection when cross-compiling.
- (try/catch not working with two exceptions inside a same operation).
- (Exception thrown from error handler causes valgrind warnings (and crashes)).
- ((Float)"Nano" == NAN).
- GD:
- (Integer overflow in imageline() with antialiasing).
- (imagescale() is not affected by, but affects imagesetinterpolation()).
- (Integer overflow in gdImageScaleBilinearPalette()).
- (Stack Buffer Overflow in GD dynamicGetbuf).
- (Ilegal write/read access caused by gdImageAALine overflow).
- (imagefilltoborder stackoverflow on truecolor images). (CVE-2016-9933)
- IMAP:
- (Integer Overflow in "_php_imap_mail" leads to crash).
- OCI8:
- (Bind reference overwritten on PHP 7).
- phpdbg:
- Properly allow for stdin input from a file.
- Add -s command line option / stdin command for reading script from stdin.
- Ignore non-executable opcodes in line mode of phpdbg_end_oplog().
- (Simple SIGINT does not have any effect with -rr).
- (INI files are loaded even invoked as -n --version).
- Session:
- (session_unset() empties values from all variables in which is $_session stored).
- SOAP:
- (SoapServer reports Bad Request when gzipped).
- (Nested object in "any" element overwrites other fields).
- (Peer verification fails when using a proxy with SoapClient)
- SQLite3:
- (2147483647 is fetched as string).
- Standard:
- (passing additional_parameters causes mail to fail).
- (array_replace_recursive sometimes mutates its parameters).
- (parse_url return wrong hostname).
- Wddx:
- (NULL Pointer Dereference in WDDX Packet Deserialization with PDORow). (CVE-2016-9934)
Version 7.0.12
- Core:
- (Heap Buffer Overflow in virtual_popen of zend_virtual_cwd.c).
- (Out of bounds global memory read in BF_crypt triggered by password_verify).
- (crypt broken when salt is 'too' long).
- (Invalid free in extension trait).
- (segfault on undefined function).
- (PHP hangs if error handler throws while accessing undef const in default value).
- (parse error: Invalid numeric literal).
- (Write out of bounds at number_format).
- (Use After Free in PHP7 unserialize()).
- (Memcpy negative size parameter php_resolve_path).
- BCmath:
- (memcpy negative parameter _bc_new_num_ex).
- COM:
- (Cannot pass parameter 1 by reference).
- Date:
- (Unserializing DateInterval object may lead to __toString invocation).
- DOM:
- (missing NULL check in dom_document_save_html).
- Filter:
- (Bad filter for the flags FILTER_FLAG_NO_RES_RANGE and FILTER_FLAG_NO_PRIV_RANGE).
- (default option ignored when object passed to int filter).
- GD:
- (imagetruecolortopalette: white is duplicated in palette).
- (imagettftext broken on transparent background w/o alphablending).
- (Integer Overflow in gdImageWebpCtx of gd_webp.c).
- (imagettfbbox gives incorrect values for bounding box).
- (imagegd2() ignores 3rd param if 4 are given).
- (imagegd2() writes wrong chunk sizes on boundaries).
- (imagegd2(): unrecognized formats may result in corrupted files).
- (imagecreatefromgd2() may leak memory).
- Intl:
- (add mitigation for ICU int overflow).
- Mbstring:
- (mb_substr only takes 32-bit signed integer).
- (mb_convert_variables() cannot detect recursion).
- (mbstring.internal_encoding doesn't inherit default_charset).
- Mysqlnd:
- (PHP Crashes When Modifying Array Containing MySQLi Result Data).
- Opcache:
- (Memory leak in zend_accel_blacklist_update_regexp() function).
- OpenSSL:
- (Invalid path SNI_server_certs causes segfault).
- (crash in openssl_random_pseudo_bytes function).
- (crash in openssl_encrypt function).
- PCRE:
- (Bundled PCRE doesn't compile because JIT isn't supported on s390).
- (heap overflow in php_pcre_replace_impl).
- PDO_DBlib:
- (Never quote values as raw binary data).
- Allow \PDO::setAttribute() to set query timeouts.
- Handle SQLDECIMAL/SQLNUMERIC types, which are used by later TDS versions.
- Add common PDO test suite.
- Free error and message strings when cleaning up PDO instances.
- (\PDOStatement::nextRowset() should succeed when all rows in current rowset haven't been fetched).
- Ignore potentially misleading dberr values.
- phpdbg:
- (phpdbg_prompt.c undefined reference to DL_LOAD).
- Fixed next command not stopping when leaving function.
- Session:
- (Session does not report invalid uid for files save handler).
- (session_destroy null dereference in ps_files_path_create).
- SimpleXML:
- (NULL pointer dereference in SimpleXMLElement::asXML()).
- SOAP:
- (Soap Server Member variables reference bug).
- (Using references in arrays doesn't work like expected).
- SPL:
- , (SplObjectStorage unserialize allows use of non-object as key).
- SQLite3:
- Updated bundled SQLite3 to 3.14.2.
- Zip:
- (Depacking with wrong password leaves 0 length files).
Version 7.0.11
- Core:
- (Null pointer deref in zval_delref_p).
- (assign_dim on string doesn't reset hval).
- (Memleak in zend_binary_assign_op_obj_helper).
- (Segfault with __get returned by ref).
- (PHP Segfaults when trying to expand an infinite operator).
- (PHP Crashes on duplicate destructor call).
- (stream_socket_recvfrom read access violation).
- COM:
- (COM called from PHP does not return out parameters).
- Dba:
- (Cannot fetch multiple values with group in ini file).
- FTP:
- (Cannot upload file using ftp_put to FTPES with require_ssl_reuse).
- GD:
- (imagesetstyle() causes OOB read for empty $styles).
- (imagecopy does not support 1bit transparency on truecolor images).
- (imagecopy() loses single-color transparency on palette images).
- (possible resource leaks in _php_image_convert()).
- iconv:
- (iconv_substr returns false for empty strings).
- IMAP:
- (imap_mail null dereference).
- Intl:
- (grapheme_*() is not Unicode compliant on CR LF sequence).
- (add locale length check). (CVE-2016-7416)
- Mysqlnd:
- (Heap overflow in mysqlnd related to BIT fields). (CVE-2016-7412)
- OCI8:
- Fixed invalid handle error with Implicit Result Sets.
- (Binding null values triggers ORA-24816 error).
- Opcache:
- (Typo in opcache error message).
- PDO:
- (Invalid memory access when using persistent PDO connection).
- (Memory leak in PDO persistent connection handling).
- (call to empty() on NULL result using PDO::FETCH_LAZY returns false).
- PDO_DBlib:
- Implemented stringify 'uniqueidentifier' fields.
- PDO_pgsql:
- (Postgres PDO lastInsertId() should work without specifying a sequence).
- (Regression in pgo_pgsql).
- Phar:
- (Out of bound when verify signature of zip phar in phar_parse_zipfile). (CVE-2016-7414)
- (Out of bound when verify signature of tar phar in phar_parse_tarfile).
- Reflection:
- (getConstant for a array constant with constant values returns NULL/NFC/UKNOWN).
- Session:
- (PHP7: session-uploadprogress kills httpd).
- (SID always return "name=ID", even if session cookie exist).
- SimpleXML:
- (SimpleXML isset/unset do not respect namespace).
- (Null coalescing operator doesn't behave as expected with SimpleXMLElement).
- SPL:
- (Missing type check when unserializing SplArray). (CVE-2016-7417)
- Standard:
- (substr_compare NULL length interpreted as 0).
- (getimagesize returning FALSE on valid jpg).
- (get_browser() incorrectly parses entries with "+" sign).
- Streams:
- (stream_set_blocking doesn't work).
- (ftps:// opendir wrapper data channel encryption fails with IIS FTP 7.5, 8.5).
- (Negative ftruncate() on php://memory exhausts memory).
- SQLite3:
- Downgraded bundled SQLite to 3.8.10.2, see
- Sysvshm:
- (shm_attach null dereference).
- Wddx:
- (wddx_deserialize use-after-free). (CVE-2016-7413)
- (Out-Of-Bounds Read in php_wddx_push_element). (CVE-2016-7418)
- XML:
- (SEGV on unknown address zif_xml_parse).
- (_xml_startElementHandler() segmentation fault).
- ZIP:
- (impossible to compile php with zip support).
Version 7.0.10
- Core:
- (Caught exception assignment to variables ignores references).
- (Calling an earlier instance of an included anonymous class fatals).
- (previous property undefined in Exception after deserialization).
- (Cannot declare public method with signature incompatible with parent private method).
- (microtime() leaks memory).
- (Unable to set --enable-debug on building extensions by phpize on Windows).
- Fixed bug causing ClosedGeneratorException being thrown into the calling code instead of the Generator yielding from.
- (Support "nmake test" on building extensions by phpize).
- (phpize (on Windows) ignores PHP_PREFIX).
- Fixed potential segfault in object storage freeing in shutdown sequence.
- (Create an Unexpected Object and Don't Invoke __wakeup() in Deserialization). (CVE-2016-7124)
- (PHP Session Data Injection Vulnerability). (CVE-2016-7125)
- (getmxrr broken).
- (memory allocator fails to realloc small block to large one). (CVE-2016-7133)
- Bz2:
- (integer overflow in bzdecompress caused heap corruption).
- Calendar:
- (cal_days_month() fails for final month of the French calendar).
- (AddressSanitizer: global-buffer-overflow in zif_cal_from_jd).
- COM:
- (DOTNET/COM array parameters broke in PHP7).
- CURL:
- (curl_setopt segfault with empty CURLOPT_HTTPHEADER).
- (CURLINFO_CERTINFO data parsing error).
- (Heap overflow in curl_escape). (CVE-2016-7134)
- DOM:
- (DOM document dangling reference).
- EXIF:
- (Samsung picture thumb not read (zero size)).
- (Memory Leakage In exif_process_IFD_in_TIFF). (CVE-2016-7128)
- Filter:
- (FILTER_FLAG_NO_RES_RANGE does not cover whole 127.0.0.0/8 range).
- FPM:
- (using --allow-to-run-as-root should ignore missing user).
- GD:
- (imagetypes function won't advertise WEBP support).
- (imagearc() ignores thickness for full arcs).
- (500 Server Error but page is fully rendered).
- (broken transparency of imagearc for truecolor in blendingmode).
- (Always false condition in ext/gd/libgd/gdkanji.c).
- (suspicious if-else statements).
- (select_colors write out-of-bounds). (CVE-2016-7126)
- (imagegammacorrect allows arbitrary write access). (CVE-2016-7127)
- (imagecropauto out-of-bounds access)
- Intl:
- (Segfault when instantiating class that extends IntlCalendar and adds a property).
- Partially fixed (idn_to_ascii for UTS #46 incorrect for long domain names).
- mbstring:
- (mb_ereg_search raises a warning if a match zero-width).
- (mb_ereg_search increments search position when a match zero-width).
- (mb_ereg_search_setpos does not accept a string's last position).
- (`mb_ereg` causes buffer overflow on regexp compile error).
- Mcrypt:
- (Heap Overflow due to integer overflows).
- Opcache:
- (Opcache restart with kill_all_lockers does not work).
- PCRE:
- (preg_match missing group names in matches).
- PDO_pgsql:
- (PDO statement fails to throw exception).
- Reflection:
- (ReflectionClass::export doesn't handle array constants).
- SimpleXML:
- (Using global var doesn't work while accessing SimpleXML element).
- SNMP:
- (php_snmp_parse_oid integer overflow in memory allocation).
- SPL:
- (GlobIterator throws LogicException).
- (SplFileObject::getCsvControl does not return the escape character).
- (AppendIterator segfault with closed generator).
- SQLite3:
- (Spurious warning when exception is thrown in user defined function).
- (SQLite3::bindValue, SQLite3::bindParam crash).
- (SQLite should allow opening with empty filename).
- Updated to SQLite3 3.13.0.
- Standard:
- (array_walk + array_replace_recursive create references from nothing).
- (base64_decode $strict fails to detect null byte).
- (base64_decode skips a character after padding in strict mode).
- (base64_decode $strict fails with whitespace between padding).
- (CSV fields incorrectly split if escape char followed by UTF chars).
- Streams:
- (Problems with the ftps wrapper).
- (opendir() does not work with ftps:// wrapper).
- (opendir() with ftp:// attempts to open data stream for non-existent directories).
- (ftps:// wrapper is vulnerable to protocol downgrade attack).
- XMLRPC:
- (xmlrpc_encode() unexpected output after referencing array elements).
- Wddx:
- (boolean always deserialized as "true").
- (WDDX Packet Injection Vulnerability in wddx_serialize_value()).
- (wddx_deserialize allows illegal memory access). (CVE-2016-7129)
- (wddx_deserialize null dereference). (CVE-2016-7130)
- (wddx_deserialize null dereference with invalid xml). (CVE-2016-7131)
- (wddx_deserialize null dereference in php_wddx_pop_element). (CVE-2016-7132)
- Zip:
- (NULL Pointer dereference in zend_virtual_cwd).
Version 7.0.9
- Core:
- (strange references after recursive function call and "switch" statement).
- (Stack-based buffer overflow vulnerability in virtual_file_ex). (CVE-2016-6289)
- (HTTP_PROXY is improperly trusted by some PHP libraries and applications). (CVE-2016-5385)
- bz2:
- (Inadequate error handling in bzread()). (CVE-2016-5399)
- CLI:
- (SCRIPT_FILENAME shows wrong path if the user specify router.php).
- COM:
- (variant_date_from_timestamp null dereference).
- Curl:
- (size_t overflow lead to heap corruption).
- Date:
- (DateTime::createFromFormat 'U' with pre 1970 dates fails parsing).
- Exif:
- (Out of bound read in exif_process_IFD_in_MAKERNOTE). (CVE-2016-6291)
- (NULL Pointer Dereference in exif_process_user_comment). (CVE-2016-6292)
- GD:
- (Thick styled lines have scrambled patterns).
- (XBM images require width to be multiple of 8).
- (imagefilledpolygon doesn't draw horizontal line).
- (gdImageTrueColorToPaletteBody allows arbitrary write/read access).
- (imagegif/output out-of-bounds access).
- (Integer overflow error within _gdContributionsAlloc()). (CVE-2016-6207)
- (Ilegal write/read access caused by gdImageAALine overflow).
- (imagecropauto out-of-bounds access).
- Intl:
- (locale_accept_from_http out-of-bounds access). (CVE-2016-6294)
- Mbstring:
- (mb_ereg_replace - mbc_to_code (oniguruma) - oob read access).
- (Use-After-Free in MBString (search_re)).
- mcrypt:
- , bug (Incorrect casting from size_t to int lead to heap overflow in mdecrypt_generic).
- PDO_pgsql:
- (Segmentation fault when binding parameters on a query without placeholders).
- PCRE:
- (Memleak in jit_stack).
- (mail fails with invalid argument).
- Readline:
- (readline_redisplay crashes php).
- Standard:
- (readfile() mangles files larger than 2G).
- (Heap overflow through proc_open and $env parameter).
- Session:
- (ps_files_cleanup_dir Buffer overflow).
- (Use After Free in unserialize() with Unexpected Session Deserialization).
- SNMP:
- (Use After Free Vulnerability in SNMP with GC and unserialize()). (CVE-2016-6295)
- Streams:
- (Stream socket with remote address leads to a segmentation fault).
- XMLRPC:
- (heap-buffer-overflow (write) simplestring_addn simplestring.c). (CVE-2016-6296)
- Zip:
- (Stack-based buffer overflow vulnerability in php_stream_zip_opener). (CVE-2016-6297)
Version 7.0.8
- Core:
- (If host name cannot be resolved then PHP 7 crashes).
- (segfault, past-the-end access).
- (Integer Overflow in nl2br()).
- (Integer Overflow in json_encode()/json_decode()/ json_utf8_to_utf16()).
- (Integer Overflow in addcslashes/addslashes).
- (Integer Overflow in Length of String-typed ZVAL).
- Date:
- (strtotime seems to use both sunday and monday as start of week).
- FPM:
- (fastcgi_finish_request and logging environment variables).
- GD:
- (pass2_no_dither out-of-bounds access).
- (invalid dimensions can lead to crash).
- (Integer Overflow in _gd2GetHeader() resulting in heap overflow). (CVE-2016-5766)
- (NULL Pointer Dereference at _gdScaleVert).
- (Integer Overflow in gdImagePaletteToTrueColor() resulting in heap overflow). (CVE-2016-5767)
- Intl:
- (selectordinal doesn't work with named parameters).
- mbstring:
- (_php_mb_regex_ereg_replace_exec - double free). (CVE-2016-5768)
- mcrypt:
- (Heap Overflow due to integer overflows). (CVE-2016-5769)
- OpenSSL:
- (segfault after calling ERR_free_strings()).
- PCRE:
- (preg_replace uses int instead of size_t).
- PDO_pgsql:
- (Segfault (core dumped) if paramno beyond bound).
- (Segmentation fault/invalid pointer in connection with pgsql_stmt_dtor).
- Phar:
- (invalid free in phar_extract_file()). (CVE-2016-4473)
- Phpdbg:
- (phpdbg fatal errors with coverage).
- Postgres:
- (pg_pconnect/pg_connect cause use-after-free).
- (pg_lo_create arbitrary read).
- Standard:
- (range() with float step produces unexpected result).
- (dns_get_record returns array containing elements of type 'unknown').
- (Wrong reference when serialize/unserialize an object).
- (ignore_user_abort(false) has no effect).
- WDDX:
- (Double Free Courruption in wddx_deserialize). (CVE-2016-5772)
- XML:
- (xml_parser_create/xml_parser_free leaks mem).
- XMLRPC:
- (use-after-free caused by get_zval_xmlrpc_type).
- Zip:
- (ZipArchive converts filenames to unrecoverable form).
- (ZipArchive class Use After Free Vulnerability in PHP's GC algorithm and unserialize). (CVE-2016-5773)
Version 7.0.7
- Core:
- (use-after-free - error_reporting).
- Add compiler option to disable special case function calls.
- (crash on complex code).
- (implode() inserts garbage into resulting string when joins very big integer).
- (PHP Hangs when using custom error handler and typehint).
- (Function calls with values to a by-ref parameter don't always throw a notice).
- (Memory leak in closure with parameter named $this).
- (?? is not allowed on constant expressions).
- (Imported Class Overrides Local Class Name).
- Curl:
- (Define CURLE_SSL_CACERT_BADFILE).
- DBA:
- (use-after-free caused by dba_open).
- GD:
- (imagescale out-of-bounds read). (CVE-2013-7456)
- Intl:
- (Add intl.use_exceptions to php.ini-*).
- (get_icu_value_internal out-of-bounds read). (CVE-2016-5093)
- JSON:
- (Behavior \JsonSerializable different from json_encode).
- Mbstring:
- (Null Pointer Dereference - mb_ereg_replace).
- OCI8:
- (oci_fetch_all segfaults when selecting more than eight columns).
- Opcache:
- (Including a file with anonymous classes multiple times leads to fatal error).
- OpenSSL:
- (Null pointer dereference - openssl_csr_new).
- PCNTL:
- (pcntl_wait/pcntl_waitpid array internal structure overwrite).
- POSIX:
- (php_posix_group_to_array crashes if gr_passwd is NULL).
- Postgres:
- (pg_query_params(): NULL converts to empty string).
- (pg_convert() doesn't accept ISO 8601 for datatype timestamp).
- (mysqli_fetch_object changed behaviour). Patch to is reverted.
- Reflection:
- (ReflectionProperty#getValue() causes __isset call).
- Session:
- (Cyclic references causing session_start(): Failed to decode session object).
- Sockets:
- Added socket_export_stream() function for getting a stream compatible resource from a socket resource.
- SPL:
- (The reference in CallbackFilterIterator doesn't work as expected).
- SQLite3:
- (bindValue is not using the right data type).
- Standard:
- (Referencing socket resources breaks stream_select).
- (array_column() against an array of objects discards all values matching null).
Version 7.0.6
- Core:
- (_zval_dtor_func: Assertion `(arr)->gc.refcount <= 1' failed).
- (Crash on assert(new class{})).
- (Reference is lost in "switch").
- (Interfaces allow final and abstract functions).
- (zend_objects_store_call_destructors operates on realloced memory, crashing).
- (EG(error_zval) is not handled well).
- (Multiple Heap Overflows in php_raw_url_encode/ php_url_encode).
- (Null coalescing operator and ArrayAccess).
- (Segmentation fault on ZTS with gethostbyname).
- (Inheritance, traits and interfaces).
- (Null coalescing operator and magic).
- (Cannot access array keys while uksort()).
- (ArrayAccess, isset() and the offsetExists method).
- (__debugInfo with empty string for key gives error).
- (ArrayObject and isset are not friends).
- (Decorated/Nested Generator is Uncloseable in Finally).
- BCmath:
- (bcpowmod accepts negative scale and corrupts _one_ definition). (CVE-2016-4537, CVE-2016-4538)
- Curl:
- (CURLOPT_NOPROXY applied as long instead of string).
- Date:
- (DateInterval::format Segmentation fault).
- EXIF:
- (Out of bounds heap read access in exif header processing). (CVE-2016-4542, CVE-2016-4543, CVE-2016-4544)
- GD:
- (libgd: signedness vulnerability). (CVE-2016-3074)
- Intl:
- (IntlDateFormatter looses locale if pattern is set via constructor).
- (Missing constant: IntlChar::NO_NUMERIC_VALUE).
- , (Inconsistencies in return values of IntlChar methods).
- (Stackoverflow in datefmt_create).
- (Locale::lookup incorrectly returns en or en_US if locale is empty).
- (selectordinal doesn't work with named parameters).
- (Out-of-bounds reads in zif_grapheme_stripos with negative offset). (CVE-2016-4540, CVE-2016-4541)
- ODBC:
- (Script hangs after max_execution_time).
- Opcache:
- (null ptr deref ZEND_RETURN_SPEC_CONST_HANDLER).
- PDO:
- (Own PDOStatement implementation ignore __call()).
- (Quotes inside comments not properly handled).
- PDO_DBlib:
- (dblib_handle_quoter needs to allocate an extra byte).
- Add DBLIB-specific attributes for controlling timeouts.
- PDO_pgsql:
- (pdo_pgsql inefficient when getColumnMeta() is used).
- Postgres:
- (pg_fetch_object binds parameters before call constructor).
- (Function pg_insert does not insert when column type = inet).
- SOAP:
- (Nested foreach assign-by-reference creates broken variables).
- SPL:
- (Deserializing serialized SPLObjectStorage-Object can't access properties in PHP).
- (Double-free in SplDoublyLinkedList::offsetSet).
- (Cloned SplObjectStorage with overwritten getHash fails offsetExists()).
- (SPL autoloader breaks class_exists()).
- Standard:
- (array_fill optimization breaks implementation).
- (Returning the same var twice from __sleep() produces broken serialized data).
- (Unserialize crushes on restore object reference).
- (str_replace returns an incorrect resulting array after a foreach by reference).
- (header_register_callback() and register_shutdown_function()).
- (Null pointer deref (segfault) in stream_context_get_default).
- (Unserialize accepts wrongly data).
- (Wrong arrays behaviour).
- (substr_replace bug, string length).
- (php_crypt() crashes if crypt_r() does not exist or _REENTRANT is not defined).
- XML:
- (xml_parse_into_struct segmentation fault). (CVE-2016-4539)
- Zip:
- (integer overflow in ZipArchive::getFrom*). (CVE-2016-3078)
Version 7.0.5
- Core:
- Huge pages disabled by default.
- Added ability to enable huge pages in Zend Memory Manager through the environment variable USE_ZEND_ALLOC_HUGE_PAGES=1.
- (Call-by-reference widens scope to uninvolved functions when used in switch).
- (Possible crash in zend_bin_strtod, zend_oct_strtod, zend_hex_strtod).
- (Global variables are reserved before execution).
- (Out-of-bounds access in php_url_decode in context php_stream_url_wrap_rfc2397).
- (Strings used in pass-as-reference cannot be used to invoke C::$callable()).
- (Segmentation fault on ZTS with date function (setlocale)).
- (Integer overflow in zend_mm_alloc_heap()).
- (Leaked 1 hashtable iterators).
- (ISO C does not allow extra ‘;’ outside of a function).
- (yield from does not count EOLs).
- (ReflectionMethod::getDocComment returns the wrong comment).
- (php_strip_whitespace() fails on some numerical values).
- (`php -R` (PHP_MODE_PROCESS_STDIN) is broken).
- CLI Server:
- (Support MKCALENDAR request method).
- Curl:
- (Support constant CURLM_ADDED_ALREADY).
- Date:
- (DatePeriod::getEndDate segfault).
- Fileinfo:
- (Buffer over-write in finfo_open with malformed magic file). (CVE-2015-8865)
- libxml:
- (Access Violation crashes php-cgi.exe).
- mbstring:
- (AddressSanitizer: negative-size-param (-1) in mbfl_strcut). (CVE-2016-4073)
- ODBC:
- , (Executing prepared statements is succesfull only for the first two statements).
- PCRE:
- (segmentation fault in pcre running twig tests).
- PDO_DBlib:
- (PDO::MSSQL forces format of datetime fields).
- Phar:
- (Crash in php7.dll with bad phar filename).
- (PharData fails to open specific file).
- (Invalid memory write in phar on filename with \0 in name). (CVE-2016-4072)
- phpdbg:
- Fixed crash when advancing (except step) inside an internal function.
- Session:
- (Null pointer dereference in zend_hash_str_find_bucket).
- SNMP:
- (php_snmp_error() Format String Vulnerability). (CVE-2016-4071)
- SPL:
- (private properties lost when unserializing ArrayObject).
- Standard:
- (array_column behaves incorrectly after foreach by reference).
- (Integer Overflow in php_raw_url_encode). (CVE-2016-4070)
- Zip:
- Update bundled libzip to 1.1.2.
Version 7.0.4
- Core:
- Fixed bug (Low probability segfault in zend_arena).
- (Typehinted Generator with return in try/finally crashes).
- (forward_static_call crash).
- (Segfault using built-in webserver with intl using symfony).
- (An integer overflow bug in php_implode()).
- (An integer overflow bug in php_str_to_str_ex()).
- (Crash because of VM stack corruption on Magento2).
- (Return typehint on internal func causes Fatal error when it throws exception).
- (Variable references on array elements don't work when using count).
- (finally block not executed after yield from).
- (Multiple Heap Overflow due to integer overflows in xml/filter_url/addcslashes). (CVE-2016-4344, CVE-2016-4345, CVE-2016-4346)
- CLI server:
- (Built-in HTTP server, we can download file in web by bug).
- CURL:
- (Copied handle with new option CURLOPT_HTTPHEADER crashes while curl_multi_exec).
- Fixed memory leak in curl_getinfo().
- Date:
- (Calls to date_modify will mutate timelib_rel_time, causing date_date_set issues).
- Fileinfo:
- (finfo throws notice for specific python file).
- FPM:
- (FPM not working with Apache httpd 2.4 balancer/fcgi setup).
- (php-fpm dumped core).
- Opcache:
- (Possible use-after-free of ZCG(cwd) in Zend Opcache).
- PCRE:
- (PCRE segfault from Opcache).
- phpdbg:
- Fixed inherited functions from unspecified files being included in phpdbg_get_executable().
- SOAP:
- (Type Confusion Vulnerability - SOAP / make_http_soap_request()). (CVE-2016-3185)
- Standard:
- (compact() maintains references in php7).
- (strip_tags improper php code parsing).
- XMLRPC:
- (xmlrpc_encode_request ignores encoding option).
- Zip:
- (NULL pointer dereference in Zip::ExtractTo).
Version 7.0.3
- Core:
- Added support for new HTTP 451 code.
- (exec functions ignore length but look for NULL termination).
- (No check to duplicate zend_extension).
- (round() segfault on 64-bit builds).
- (Null pointer deref (segfault) in get_defined_vars via ob_start).
- (Wrong interface is enforced).
- (A wrong ext directory setup in php.ini leads to crash).
- (Bad method called on cloning an object having a trait).
- (Memory leak with consecutive yield from).
- (Segfault in zend_fetch_string_offset).
- (var_export(INF) prints INF.0).
- (Output of stream_get_meta_data can be falsified by its input).
- (Wrong is_ref on properties as exposed via get_object_vars()).
- (Integer overflow in iptcembed()).
- Apache2handler:
- Fix >2G Content-Length headers in apache2handler.
- CURL:
- (Can't compile php_curl statically).
- (curl_setopt() fails to set CURLOPT_POSTFIELDS with reference to CURLFile).
- GD:
- Interbase:
- (Crash when optional resource is omitted).
- LDAP:
- (ldap_mod_replace/ldap_mod_add store value as string "Array").
- mbstring:
- (mb_send_mail segmentation fault).
- OpenSSL:
- (openssl_seal() uninitialized memory usage).
- PCRE:
- Upgraded bundled PCRE library to 8.38. (CVE-2015-8383, CVE-2015-8386, CVE-2015-8387, CVE-2015-8389, CVE-2015-8390, CVE-2015-8391, CVE-2015-8393, CVE-2015-8394)
- Phar:
- (Heap corruption in tar/zip/phar parser). (CVE-2016-4342)
- (Uninitialized pointer in phar_make_dirstream()). (CVE-2016-4343)
- (NULL Pointer Dereference in phar_tar_setupmetadata()).
- (Stack overflow when decompressing tar archives). (CVE-2016-2554)
- SOAP:
- (crash with bad soap request).
- SPL:
- (segfault if clean spl_autoload_funcs while autoloading).
- (Autoload function registered by another not activated immediately).
- (Use-after-free vulnerability in SPL(ArrayObject, unserialize)).
- (Use-after-free vulnerability in SPL(SplObjectStorage, unserialize)).
- Standard:
- (Error message contains hexadecimal instead of decimal number).
- (file_put_contents() returns unexpected value when filesystem runs full).
- (file_get_contents() ignores "header" context option if it's a reference).
- (Null pointer deref (segfault) in compact via ob_start).
- (substr_replace converts integers in original $search array to strings).
- (str_replace converts integers in original $search array to strings).
- , (range() segfaults).
- WDDX:
- (Type Confusion in WDDX Packet Deserialization).
Version 7.0.2
- Core:
- (-DGC_BENCH=1 doesn't work on PHP7).
- (Segmentation Fault: cleanup_unfinished_calls).
- (ZEND_MOD_CONFLICTS("xdebug") doesn't work).
- (Segmentation fault with return type hinting).
- Fixed bug memleak in header_register_callback.
- (Local object in class method stays in memory for each call).
- (configure fails utf8_to_mutf7 test).
- (Extension tests fail on dynamic ext dependency).
- (No check to duplicate zend_extension).
- (Invalid numeric literal parse error within highlight_string() function).
- (Incorrect HT iterator invalidation causes iterator reuse).
- (Negating zero does not produce negative zero).
- (var_export() exports float as integer).
- (Unary add on negative zero produces positive zero).
- CURL:
- (Sementation fault when using cURL with ZTS).
- DBA:
- Fixed key leak with invalid resource.
- Filter:
- (filter_input(INPUT_ENV, ..) does not work).
- FTP:
- (Option to ignore the returned FTP PASV address).
- FPM:
- (fpm_log.c memory leak and buffer overflow). (CVE-2016-5114)
- GD:
- (Memory Read via gdImageRotateInterpolated Array Index Out of Bounds). (CVE-2016-1903)
- Mbstring:
- (mb_send_mail: Program terminated with signal SIGSEGV, Segmentation fault).
- Opcache:
- (Define in auto_prepend_file is overwrite).
- PCRE:
- (preg_replace with arrays creates [0] in replace array if not already set).
- Readline:
- (readline_completion_function corrupts static array on second TAB).
- Session:
- (Session GC may not remove obsolete session data).
- SPL:
- (ReflectionMethod for ArrayObject constructor returns wrong number of parameters).
- (Performance Degradation in ArrayIterator with large arrays).
- Standard:
- (Heap BufferOver Flow in escapeshell functions). (CVE-2016-1904)
- WDDX:
- (Use After Free Vulnerability in WDDX Packet Deserialization).
- (Session WDDX Packet Deserialization Type Confusion Vulnerability).
- XMLRPC:
- (Type Confusion Vulnerability in PHP_to_XMLRPC_worker).
Version 7.0.1
- Core:
- (Format String Vulnerability in Class Name Error Message). (CVE-2015-8617)
- (Compile fails on system with 160 CPUs).
- (symbol referencing errors on Sparc/Solaris).
- (When using parentClass:: instead of parent::, static context changed).
- (Segfault when combining error handler with output buffering).
- (Weird error handling for __toString when Error is thrown).
- (Invalid opcode while using ::class as trait method paramater default value).
- (try{ } finally{} can create infinite chains of exceptions).
- (Two errors messages are in conflict).
- (yield from incorrectly marks valid generator as finished).
- (buildconf failure in extensions).
- (SAPI build problem on AIX: Undefined symbol: php_register_internal_extensions).
- Fixed \int (or generally every scalar type name with leading backslash) to not be accepted as type name.
- Fixed exception not being thrown immediately into a generator yielding from an array.
- (static::class within Closure::call() causes segfault).
- (Incorrect exception handler with yield from).
- Fixed double free in error condition of format printer.
- CLI server:
- (Segfault in php_cli_server_dispatch_router()).
- Intl:
- (Use after free in Collator::sortWithSortKeys). (CVE-2015-8616)
- Mysqlnd:
- (LOAD DATA LOCAL INFILE / open_basedir restriction).
- (MySQLi does not provide way to disable peer certificate validation) by introducing MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT connection flag.
- OCI8:
- Fixed LOB implementation size_t/zend_long mismatch reported by gcov.
- Opcache:
- (Unable to use PHP 7.0 x64 side-by-side with PHP 5.6 x32 on the same server).
- (zend_file_cache.c:710: error: array type has incomplete element type).
- (Segmentation fault with opcache.huge_code_pages=1).
- PDO_Firebird:
- (Integer returned as a 64bit integer on X64_86).
- Phpdbg:
- Fixed stderr being written to stdout.
- Reflection:
- (ReflectionProperty::setValue() behavior changed).
- (setStaticPropertyValue behaviors inconsistently with 5.6).
- Soap:
- (Array key references break argument processing).
- SPL:
- (Undefined index with ArrayIterator).
- SQLite3:
- (SQLite3Stmt::execute() releases bound parameter instead of internal buffer).
- Standard:
- (php_random_bytes: called object is not a function).
- (ReflectionFunction for array_unique returns wrong number of parameters).
- Streams/Socket:
- Add IPV6_V6ONLY constant / make it usable in stream contexts.
Version 7.0.0
- Core:
- (INI parser segfault with INI_SCANNER_TYPED).
- (zend_throw_or_error() format string vulnerability).
- (Null ptr dereference instantiating class with invalid array property).
- , (null ptr deref and segfault with crafted calable).
- (Segmentation fault while running PHPUnit tests on phpBB 3.2-dev).
- (Segmentation faults whilst running Drupal 8 test suite).
- (Persistent Stream Segmentation Fault).
- (Several functions do not check return code of php_stream_copy_to_mem()).
- (Incorect logic to increment_function for proxy objects).
- (Regression in zend_fetch_debug_backtrace() can cause segfaults).
- (Regression on private static properties access).
- (Segfault in ini_lex () at Zend/zend_ini_scanner.l).
- (Exception handler does not work as expected).
- (Stack buffer overflow in zend_language_parser()).
- (null ptr deref and segfault (zend_get_class_fetch_type)).
- (Infinite loop due to exception during identical comparison).
- (Closure::call/bind() crash with ReflectionFunction-> getClosure()).
- (Duplicate array key via undefined index error handler).
- (Segfault when binding $this of internal instance method to null).
- (Segfault for getClosure() internal method rebind with invalid $this).
- Added zend_internal_function.reserved[] fields.
- (Memleak on return type verifying failed).
- (fun_get_arg() on unsetted vars return UNKNOW).
- (Redundant information printed in case of uncaught engine exception).
- (unsetting function variables corrupts backtrace).
- (assert() with instanceof adds apostrophes around class name).
- (Memory leak in auto_global_copy_ctor() in ZTS build).
- (Memory leak in php_ini.c).
- (**= does no longer work).
- (SIGSEGV, Segmentation fault zend_ast_destroy_ex).
- (Wrong behavior while returning reference on object).
- (Syntactical inconsistency with new group use syntax).
- (Magic getter breaks reference to array property).
- (Notice: unserialize(): Unexpected end of serialized data).
- (From field incorrectly parsed from headers).
- (Bundled libtool.m4 doesn't handle FreeBSD 10 when building extensions).
- Fixed bug causing exception traces with anon classes to be truncated.
- (Segmentation fault when using Closure::call and yield).
- (Memleak while assigning object offsetGet result).
- (Apache crash related to ZEND_SEND_REF).
- (Accessing array crashes PHP 7.0beta3).
- (Segfault if do_resize fails to allocated memory).
- (segfault at _efree () in zend_alloc.c:1389).
- (Segfault when doing unset($var());).
- (Incrementing value returned by magic getter).
- (Segfault when __invoke is static).
- (Finally is broken with opcache).
- (ZVAL_COPY_VALUE_EX broken for 32bit Solaris Sparc).
- (SAPI may truncate POST data).
- (Checking liveness does not work as expected).
- , (Skipped assertions affect Generator returns).
- (Creating a huge array doesn't result in exhausted, but segfault).
- Fixed "finally" issues.
- (Real memory usage doesn't decrease).
- (__CLASS__ is lost in closures).
- (Segfault in zend_find_alias_name).
- (null ptr deref / seg fault in ZEND_HANDLE_EXCEPTION).
- (Unexpected return type error).
- (Inheritance by anonymous class).
- (SIGSEGV array.c:953).
- (__COMPILER_HALT_OFFSET__ under namespace is not defined).
- (sometimes empty $_SERVER['QUERY_STRING']).
- ($this refcount issue).
- ('asm' operand has impossible constraints).
- (null pointer deref (segfault) in zend_eval_const_expr).
- (Segfault in ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_HANDLER).
- (Remotely triggerable stack exhaustion via recursive method calls).
- (Different arrays compare indentical due to integer key truncation).
- (unserialize() could lead to unexpected methods execution / NULL pointer deref).
- (segfault at ZEND_FETCH_DIM_W_SPEC_VAR_CONST_HANDLER ()).
- (Build failure on 32-bit Mac OS X 10.6.8: recursive inlining).
- (Exception lost with nested finally block).
- (Changing the property of a cloned object affects the original).
- (Use after free with assign by ref to overloaded objects).
- (cli - function with default arg = STDOUT crash output).
- (Segfault in gc_collect_cycles()).
- Improved zend_string API.
- (Segfault when trying to combine [] and assign-op on ArrayAccess object).
- (Different ways of handling div/mod/intdiv).
- (Too long timeout on pipes).
- (uninitialised value in strtr with array).
- (Invalid read of size 1 in zend_compile_short_circuiting).
- (Broken output of apache_request_headers).
- (iconv_substr() doesn't work with UTF-16BE).
- (PHP 7.0.0alpha1 segmentation fault when exactly 33 extensions are loaded).
- (null ptr deref and seg fault in zend_resolve_class_name).
- (Reflection on Closure::__invoke borks type hint class name).
- (Serialization of anonymous classes should be prevented).
- (parse_ini_file() and parse_ini_string() segmentation fault).
- (phpinfo() reports Professional Editions of Windows 7/8/8.1/10 as "Business").
- (phpinfo() does not report many Windows SKUs).
- (Null coalesce operator doesn't work for string offsets).
- (Unexpected array comparison result).
- (Different arrays compare indentical due to integer key truncation).
- (Strict comparison between integer and empty string keys crashes).
- (Default parameter value with wrong type segfaults).
- (Fatal error: Nesting level too deep - recursive dependency ? with ===).
- (Item added to array not being removed by array_pop/shift ).
- (Add support for $callable() sytnax with 'Class::method').
- (Double free on zend_list_dtor).
- (Segfault on magic method __call of private method in superclass).
- Improved __call() and __callStatic() magic method handling. Now they are called in a stackless way using ZEND_CALL_TRAMPOLINE opcode, without additional stack frame.
- Optimized strings concatenation.
- Fixed weird operators behavior. Division by zero now emits warning and returns +/-INF, modulo by zero and intdid() throws an exception, shifts by negative offset throw exceptions. Compile-time evaluation of division by zero is disabled.
- (Hash table collision leads to inaccessible array keys).
- (Invalid read of size 8 in zend_std_read_property).
- (segfault in Zend/zend_hash.c in function _zend_hash_del_el).
- (Closure executed via static autoload incorrectly marked as static).
- (Cannot access static::class in lambda, writen outside of a class).
- (call a private function in closure failed).
- Added PHP_INT_MIN constant.
- Added Closure::call() method.
- (Segfault when calling phpversion('spl')).
- Implemented the RFC `Catchable "Call to a member function bar() on a non-object"`.
- Added options parameter for unserialize allowing to specify acceptable classes (https://wiki.php.net/rfc/secure_unserialize).
- (Garbage collector can free zvals that are still referenced).
- Removed ZEND_ACC_FINAL_CLASS, promoting ZEND_ACC_FINAL as final class modifier.
- is_long() & is_integer() is now an alias of is_int().
- (phpinfo: PHP Variables with $ and single quotes).
- Added ?? operator.
- Added <=> operator.
- Added \u{xxxxx} Unicode Codepoint Escape Syntax.
- Fixed oversight where define() did not support arrays yet const syntax did.
- Use "integer" and "float" instead of "long" and "double" in ZPP, type hint and conversion error messages.
- (E_RECOVERABLE_ERROR when output buffering in output buffering handler).
- Removed scoped calls of non-static methods from an incompatible $this context.
- Removed support for #-style comments in ini files.
- Removed support for assigning the result of new by reference.
- Invalid octal literals in source code now produce compile errors, fixes PHPSadness #31.
- Removed dl() function on fpm-fcgi.
- Removed support for hexadecimal numeric strings.
- Removed obsolete extensions and SAPIs. See the full list in UPGRADING.
- Added NULL byte protection to exec, system and passthru.
- Added error_clear_last() function.
- (Number 2.2250738585072012e-308 converted incorrectly).
- Improved zend_qsort(using hybrid sorting algo) for better performance, and also renamed zend_qsort to zend_sort.
- Added stable sorting algo zend_insert_sort.
- Improved zend_memnchr(using sunday algo) for better performance.
- Implemented the RFC `Scalar Type Decalarations v0.5`.
- Implemented the RFC `Group Use Declarations`.
- Implemented the RFC `Continue Output Buffering`.
- Implemented the RFC `Constructor behaviour of internal classes`.
- Implemented the RFC `Fix "foreach" behavior`.
- Implemented the RFC `Generator Delegation`.
- Implemented the RFC `Anonymous Class Support`.
- Implemented the RFC `Context Sensitive Lexer`.
- (Off-by-one buffer overflow in php_sys_readlink).
- CLI server:
- (404 on urls with '+').
- (Sets HTTP_CONTENT_TYPE but not CONTENT_TYPE).
- (CLI server directory traversal).
- (php -S changes MKCALENDAR request method to MKCOL).
- (304 responses return Content-Type header).
- Refactor MIME type handling to use a hash table instead of linear search.
- Update the MIME type list from the one shipped by Apache HTTPD.
- Added support for SEARCH WebDav method.
- COM:
- (Casting object to bool returns false).
- Curl:
- (Segmentation Fault with multiple "curl_copy_handle").
- (curl_setopt_array() type confusion).
- (curl_getinfo() returns corrupted values).
- (Segmentation fault in curl_getinfo).
- (Segfault in curl_multi_exec).
- Removed support for unsafe file uploads.
- Date:
- (strtotime does not emit warning when 2nd parameter is object or string).
- (DateInterval::__construct.interval_spec is not supposed to be optional).
- (new DateTimeZone($foo) is ignoring text after null byte).
- Fixed day_of_week function as it could sometimes return negative values internally.
- Removed $is_dst parameter from mktime() and gmmktime().
- Removed date.timezone warning (https://wiki.php.net/rfc/date.timezone_warning_removal).
- Added "v" DateTime format modifier to get the 3-digit version of fraction of seconds.
- (Added DateTime::RFC3339_EXTENDED to output in RFC3339 Extended format which includes fraction of seconds).
- DBA:
- (dba_delete returns true on missing item (inifile)).
- (useless comparisons).
- DOM:
- ("Couldn't fetch" error in DOMDocument::registerNodeClass()).
- (Assigning to DOMNode::textContent does additional entity encoding).
- (Segmenation fault (access violation) when iterating over DOMNodeList).
- Made DOMNode::textContent writeable.
- EXIF:
- (Buffer over-read in exif_read_data with TIFF IFD tag byte value of 32 bytes).
- Fileinfo:
- (libmagic: don't assume char is signed).
- Filter:
- New FILTER_VALIDATE_DOMAIN and better RFC conformance for FILTER_VALIDATE_URL.
- (Wrong return value from FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE).
- FPM:
- ("php-fpm -i" crashes).
- (HTTP Authorization Header is sometimes passed to newer reqeusts).
- (Unknown admin values segfault pools).
- (Cannot specify config lines longer than 1024 bytes).
- (Split main fpm config).
- FTP:
- (FTPS support on Windows).
- GD:
- (imagerectangle problem with point ordering).
- (Stack overflow with imagefilltoborder). (CVE-2015-8874)
- (imagecreatefromwebm() shifts colors).
- (imagewebp() doesn't pad to even length).
- (imagerotate by -90 degrees truncates image by 1px).
- (imagescale(..., IMG_BICUBIC) leaks memory).
- (imagescale segfault with palette based image).
- (Zero-height rectangle has whiskers).
- (imagecrop() add a black line when cropping).
- (copy 'n paste error).
- (PHP segfaults in imagexbm).
- (gd_info() doesn't report WebP support).
- Replace libvpx with libwebp for bundled libgd.
- (imagegammacorrect function loses alpha channel).
- Made fontFetch's path parser thread-safe.
- Removed T1Lib support.
- GMP:
- (Use after free vulnerability in unserialize() with GMP).
- hash:
- (HAVAL gives wrong hashes in specific cases).
- IMAP:
- (Building with static imap fails).
- (curl multi leaking memory).
- Intl:
- (IntlChar::foldCase() incorrect arguments and missing constants).
- (IntlChar::forDigit second parameter should be optional).
- Removed deprecated aliases datefmt_set_timezone_id() and IntlDateFormatter::setTimeZoneID().
- JSON:
- (json_decode produces invalid byte-sequences).
- (json_decode() Fatal error: Cannot access property started with '\0').
- Replace non-free JSON parser with a parser from Jsond extension, fixes (JSON extension includes a problematic license statement).
- (json_decode() decodes empty string without error).
- LDAP:
- (Implement LDAP_OPT_DIAGNOSTIC_MESSAGE).
- LiteSpeed:
- Updated LiteSpeed SAPI code from V5.5 to V6.6.
- libxml:
- Fixed handling of big lines in error messages with libxml >= 2.9.0.
- Mcrypt:
- (mcrypt_encrypt() won't return data when no IV was specified under RC4).
- (mcrypt fd caching not working).
- Fixed possible read after end of buffer and use after free.
- Removed mcrypt_generic_end() alias.
- Removed mcrypt_ecb(), mcrypt_cbc(), mcrypt_cfb(), mcrypt_ofb().
- Mysqli:
- (constructor of mysqli has wrong name).
- Mysqlnd:
- (SQL Result Sets With NULL Can Cause Fatal Memory Errors).
- (mysqli_real_query():Unknown type 245 sent by the server).
- (mysqlnd doesn't activate TCP keep-alive when connecting to a server).
- segfault in mysqlnd_connect.
- (mysqli_stmt::fetch doesn't assign null values to bound variables).
- OCI8:
- Fixed memory leak with LOBs.
- (OCI int overflow).
- Corrected oci8 hash destructors to prevent segfaults, and a few other fixes.
- ODBC:
- (PHP segfaults when accessing nvarchar(max) defined columns. (CVE-2015-8879)
- Opcache:
- (require() statement broken after opcache_reset() or a few hours of use).
- (Segmentation fault on MacOSX with opcache.file_cache_only=1).
- (Undefined Symbols from opcache.so on Mac OS X 10.10).
- Fixed compatibility with Windows 10 (see also bug ).
- Attmpt to fix "Unable to reattach to base address" problem.
- (Warning Internal error: wrong size calculation).
- (Empty while and do-while segmentation fault with opcode on CLI enabled).
- (Segfault when a function uses both an explicit return type and an explicit cast).
- (Build fails when building for i386).
- (Crash with opcache using opcache.file_cache_only=1).
- Removed opcache.load_comments configuration directive. Now doc comments loading costs nothing and always enabled.
- (Wrong size calculation for function table).
- (segfault with eval and opcache fast shutdown).
- Added experimental (disabled by default) file based opcode cache.
- Fixed bug with try blocks being removed when extended_info opcode generation is turned on.
- (strlen incorrect : mbstring + func_overload=2 +UTF-8 + Opcache).
- OpenSSL:
- Require at least OpenSSL version 0.9.8.
- (Lookup for openssl.cnf causes a message box).
- (openssl extension does not get the DH parameters from DH key resource).
- (Missing ARG_INFO for openssl_seal()).
- (openssl_seal fails with AES).
- (Add IV parameter for openssl_seal and openssl_open).
- (openssl_random_pseudo_bytes() is not cryptographically secure). (CVE-2015-8867)
- (OpenSSL error "key values mismatch" after openssl_pkcs12_read with extra cert).
- Added "alpn_protocols" SSL context option allowing encrypted client/server streams to negotiate alternative protocols using the ALPN TLS extension when built against OpenSSL 1.0.2 or newer. Negotiated protocol information is accessible through stream_get_meta_data() output.
- Removed "CN_match" and "SNI_server_name" SSL context options. Use automatic detection or the "peer_name" option instead.
- Pcntl:
- (Can't compile on NetBSD because of missing WCONTINUED and WIFCONTINUED).
- (pcntl_signal doesn't decrease ref-count of old handler when setting SIG_DFL).
- (Added wifcontinued and wcontinued).
- Added rusage support to pcntl_wait() and pcntl_waitpid().
- PCRE:
- (Incorrect bump-along behavior with \K and empty string match).
- (Multiple vulnerabilities related to PCRE functions).
- (Incorrect bump-along behavior with \K and empty string match).
- (preg_replace: * qualifier on unicode replace garbles the string).
- (Segfault in preg_replace_callback).
- Removed support for the /e (PREG_REPLACE_EVAL) modifier.
- PDO:
- (Segmentation fault in pdo_parse_params() during Drupal 8 test suite).
- (PDO constructor changes unrelated variables).
- (Segfault in pdo_mysql).
- (persistent sqlite connection + custom function segfaults).
- (./configure fails with "Cannot find php_pdo_driver.h").
- PDO_DBlib:
- (Segmentation fault on nextRowset).
- PDO_mysql:
- (Add new PDO mysql connection attr to control multi statements option).
- PDO_OCI:
- (PDO::ATTR_PREFETCH is ignored).
- PDO_pgsql:
- (PDOStatement::execute() leaks memory with DML Statements when closeCuror() is u).
- Removed PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT attribute in favor of ATTR_EMULATE_PREPARES).
- Phar:
- (Null pointer dereference in phar_get_fp_offset()).
- (Uninitialized pointer in phar_make_dirstream when zip entry filename is "/").
- Improved fix for bug .
- (Files extracted from archive may be placed outside of destination directory).
- Phpdbg:
- (incorrect exit code in -rr mode with Exceptions).
- (phpdbg must respect set_exception_handler).
- (Run and quit mode (-qrr) should not fallback to interactive mode).
- (Help overview (-h) does not rpint anything under Windows).
- (PHP won't compile on 10.4 and 10.5 because of missing constants).
- (FASYNC not defined, needs sys/file.h include).
- (Segfault when displaying memory leaks).
- Reflection:
- (Wrong docblock assignment).
- (ReflectionFunction::getClosure() leaks memory when used for internal functions).
- Fixed bug causing bogus traces for ReflectionGenerator::getTrace().
- Fixed inheritance chain of Reflector interface.
- Added ReflectionGenerator class.
- Added reflection support for return types and type declarations.
- Session:
- (Segmentation fault when regenerating session id with strict mode).
- (Session read causes "String is not zero-terminated" error).
- (Reference to $_SESSION is lost after a call to session_regenerate_id()).
- (Data integrity issues accessing superglobals by reference).
- (Regression in session_regenerate_id()).
- (mod_files.sh is a bash-script).
- SOAP:
- (Segfault in soap / type_to_string).
- (SoapClient systematic out of memory error).
- (Segmentation fault if wsdl has no targetNamespace attribute).
- (Segmentation fault inside soap client).
- (SOAP Client generates Segfault).
- (SOAP serialize_function_call() type confusion / RCE).
- (SoapClient info leak / null pointer dereference via multiple type confusions).
- (Segmentation fault after more than 100 SoapClient calls).
- (make_http_soap_request calls zend_hash_get_current_key_ex(,,,NULL).
- (Segmentation fault on SoapClient::__getTypes).
- SPL:
- (ArrayObject unserialize does not restore protected fields).
- (SplFixedArray throws exception when using ref variable as index).
- (PCRE JIT and pattern reuse segfault).
- (Incorrect ArrayObject serialization if unset is called in serialize()).
- (Cloning SplPriorityQueue leads to memory leaks).
- (Incorrect constructor reflection for ArrayObject).
- (Dangling pointer in the unserialization of ArrayObject items).
- (Use After Free Vulnerability in unserialize() with SPLArrayObject).
- (Use After Free Vulnerability in unserialize() with SplObjectStorage).
- (Use After Free Vulnerability in unserialize() with SplDoublyLinkedList).
- (MutlitpleIterator array-keys incompatible change in PHP 7).
- (Use-after-free vulnerability in spl_recursive_it_move_forward_ex()).
- (ArrayObject with ARRAY_AS_PROPS broken).
- Changed ArrayIterator implementation using zend_hash_iterator_... API. Allowed modification of iterated ArrayObject using the same behavior as proposed in `Fix "foreach" behavior`. Removed "Array was modified outside object and internal position is no longer valid" hack.
- (SplPriorityQueue/SplHeap doesn't expose extractFlags nor curruption state).
- (RecursiveDirectoryIterator::CURRENT_AS_PATHNAME breaks the RecursiveIterator).
- SQLite3:
- (Memory leak in sqlite3_do_callback).
- (Use-after-free vulnerability in sqlite3SafetyCheckSickOrOk()).
- (segfault when manually constructing SQLite3Result).
- (SQLite3Result::fetchArray declares wrong required_num_args).
- Standard:
- Fixed count on symbol tables.
- (Unserialize shows UNKNOWN in result).
- (extract() breaks variable references).
- (array_merge_recursive corrupts memory of unset items).
- (strtr() causes invalid writes and a crashes).
- (array_keys() doesn't respect references when $strict is true).
- Implemented the RFC `Random Functions Throwing Exceptions in PHP 7`.
- (pack('x') produces an error).
- (changing configuration with ignore_user_abort(true) isn't working).
- (Segmentation fault with setrawcookie).
- (setcookie() conditional for empty values not met).
- (Use-after-free vulnerability in unserialize() with SplObjectStorage).
- (Use-after-free vulnerability in unserialize() with SplDoublyLinkedList).
- (extract() turns array elements to references).
- (php 7 ZEND_HASH_IF_FULL_DO_RESIZE use after free).
- (Assert breaking access on objects).
- (str_ireplace/php_string_tolower - Arbitrary Code Execution).
- (Allow "dirname" to go up various times).
- (scandir duplicates file name at every 65535th file).
- (Repeated iptcembed() adds superfluous FF bytes).
- (exec does not strip all whitespace).
- (get_browser fails with user agent of null).
- (Unable to parse "all" urls with colon char).
- (escapeshell*() doesn't cater to !).
- (Truncating entire string should result in string).
- (Passing parameters by reference and array_column).
- (Cookie name cannot be empty).
- (php_copy_file_ex does not pass the argument).
- (Regression in array_filter's $flag argument in PHP 7).
- Removed call_user_method() and call_user_method_array() functions.
- Fixed user session handlers (See rfc:session.user.return-value).
- Added intdiv() function.
- Improved precision of log() function for base 2 and 10.
- Remove string category support in setlocale().
- Remove set_magic_quotes_runtime() and its alias magic_quotes_runtime().
- (flock() out parameter not set correctly in windows).
- Added preg_replace_callback_array function.
- Deprecated salt option to password_hash.
- (password_verify reports back error on PHP7 will null string).
- Added Windows support for getrusage().
- Removed hardcoded limit on number of pipes in proc_open().
- Streams:
- (HTTP stream wrapper doesn't close keep-alive connections).
- (convert.base64-encode omits padding bytes).
- Removed set_socket_blocking() in favor of its alias stream_set_blocking().
- Tokenizer:
- (token_get_all has new irrecoverable errors).
- XMLReader:
- (XmlReader read generates extra output).
- XMLRPC:
- (xmlrpc_set_type returns false on success).
- XSL:
- (PHP7 returns true when false is expected).
- (XSLT: free(): invalid pointer).
- (NULL pointer dereference).
- (The XSLT extension is not thread safe).
- Removed xsl.security_prefs ini option.
- Zlib:
- Added deflate_init(), deflate_add(), inflate_init(), inflate_add() functions allowing incremental/streaming compression/decompression.
- Zip:
- (ZipArchive::close() doesn't indicate errors).
- (ZipArchive::extractTo allows for directory traversal when creating directories). (CVE-2014-9767)
- Added ZipArchive::setCompressionName and ZipArchive::setCompressionIndex methods.
- Update bundled libzip to 1.0.1.
- (ZipArchive::getStream() returns NULL for certain file).