mirror of
https://github.com/bdnugget/php-src.git
synced 2026-11-11 19:20:50 +00:00
Compare commits
9
Commits
php-7.4.6
...
php-5.6.11
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d8e4dcdfd6 | ||
|
|
763e7ae03e | ||
|
|
9cbe8610fa | ||
|
|
1f4a841095 | ||
|
|
d1370e2016 | ||
|
|
d4b97c6134 | ||
|
|
57747d08e7 | ||
|
|
145c616761 | ||
|
|
a2edce2265 |
No files matched your search
@@ -1,6 +1,6 @@
|
||||
PHP NEWS
|
||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
?? Jul 2015, PHP 5.6.11
|
||||
10 Jul 2015, PHP 5.6.11
|
||||
|
||||
- Core:
|
||||
. Fixed bug #69768 (escapeshell*() doesn't cater to !). (cmb)
|
||||
@@ -20,6 +20,8 @@ PHP NEWS
|
||||
(Christian Wenz)
|
||||
. Fixed bug #69892 (Different arrays compare indentical due to integer key
|
||||
truncation). (Nikita)
|
||||
. Fixed bug #69874 (Can't set empty additional_headers for mail()), regression
|
||||
from fix to bug #68776. (Yasuo)
|
||||
|
||||
- GD:
|
||||
. Fixed bug #61221 (imagegammacorrect function loses alpha channel). (cmb)
|
||||
@@ -49,6 +51,12 @@ PHP NEWS
|
||||
. Fixed bug #69737 (Segfault when SplMinHeap::compare produces fatal error).
|
||||
(Stas)
|
||||
. Fixed bug #67805 (SplFileObject setMaxLineLength). (Willian Gustavo Veiga).
|
||||
. Fixed bug #69970 (Use-after-free vulnerability in
|
||||
spl_recursive_it_move_forward_ex()). (Laruence)
|
||||
|
||||
- Sqlite3:
|
||||
. Fixed bug #69972 (Use-after-free vulnerability in
|
||||
sqlite3SafetyCheckSickOrOk()). (Laruence)
|
||||
|
||||
11 Jun 2015, PHP 5.6.10
|
||||
|
||||
|
||||
+1
-1
@@ -120,7 +120,7 @@ int zend_sprintf(char *buffer, const char *format, ...);
|
||||
PHP_MAJOR_VERSION=5
|
||||
PHP_MINOR_VERSION=6
|
||||
PHP_RELEASE_VERSION=11
|
||||
PHP_EXTRA_VERSION="-dev"
|
||||
PHP_EXTRA_VERSION=""
|
||||
PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
|
||||
PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
|
||||
|
||||
|
||||
+37
-23
@@ -401,7 +401,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, set_server_option)(MYSQLND_CONN_DATA * const c
|
||||
|
||||
int2store(buffer, (unsigned int) option);
|
||||
ret = conn->m->simple_command(conn, COM_SET_OPTION, buffer, sizeof(buffer), PROT_EOF_PACKET, FALSE, TRUE TSRMLS_CC);
|
||||
|
||||
|
||||
conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
|
||||
}
|
||||
DBG_RETURN(ret);
|
||||
@@ -490,27 +490,41 @@ mysqlnd_switch_to_ssl_if_needed(
|
||||
}
|
||||
|
||||
#ifdef MYSQLND_SSL_SUPPORTED
|
||||
if ((greet_packet->server_capabilities & CLIENT_SSL) && (mysql_flags & CLIENT_SSL)) {
|
||||
zend_bool verify = mysql_flags & CLIENT_SSL_VERIFY_SERVER_CERT? TRUE:FALSE;
|
||||
DBG_INF("Switching to SSL");
|
||||
if (!PACKET_WRITE(auth_packet, conn)) {
|
||||
CONN_SET_STATE(conn, CONN_QUIT_SENT);
|
||||
conn->m->send_close(conn TSRMLS_CC);
|
||||
SET_CLIENT_ERROR(*conn->error_info, CR_SERVER_GONE_ERROR, UNKNOWN_SQLSTATE, mysqlnd_server_gone);
|
||||
goto end;
|
||||
}
|
||||
if (mysql_flags & CLIENT_SSL) {
|
||||
zend_bool server_has_ssl = (greet_packet->server_capabilities & CLIENT_SSL)? TRUE:FALSE;
|
||||
if (server_has_ssl == FALSE) {
|
||||
goto close_conn;
|
||||
} else {
|
||||
zend_bool verify = mysql_flags & CLIENT_SSL_VERIFY_SERVER_CERT? TRUE:FALSE;
|
||||
DBG_INF("Switching to SSL");
|
||||
if (!PACKET_WRITE(auth_packet, conn)) {
|
||||
goto close_conn;
|
||||
}
|
||||
|
||||
conn->net->data->m.set_client_option(conn->net, MYSQL_OPT_SSL_VERIFY_SERVER_CERT, (const char *) &verify TSRMLS_CC);
|
||||
conn->net->data->m.set_client_option(conn->net, MYSQL_OPT_SSL_VERIFY_SERVER_CERT, (const char *) &verify TSRMLS_CC);
|
||||
|
||||
if (FAIL == conn->net->data->m.enable_ssl(conn->net TSRMLS_CC)) {
|
||||
goto end;
|
||||
if (FAIL == conn->net->data->m.enable_ssl(conn->net TSRMLS_CC)) {
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
auth_packet->client_flags &= ~CLIENT_SSL;
|
||||
if (!PACKET_WRITE(auth_packet, conn)) {
|
||||
goto close_conn;
|
||||
}
|
||||
#endif
|
||||
ret = PASS;
|
||||
end:
|
||||
PACKET_FREE(auth_packet);
|
||||
DBG_RETURN(ret);
|
||||
|
||||
close_conn:
|
||||
CONN_SET_STATE(conn, CONN_QUIT_SENT);
|
||||
conn->m->send_close(conn TSRMLS_CC);
|
||||
SET_CLIENT_ERROR(*conn->error_info, CR_SERVER_GONE_ERROR, UNKNOWN_SQLSTATE, mysqlnd_server_gone);
|
||||
PACKET_FREE(auth_packet);
|
||||
DBG_RETURN(ret);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -1589,7 +1603,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, sqlstate)(const MYSQLND_CONN_DATA * const conn
|
||||
|
||||
|
||||
/* {{{ mysqlnd_old_escape_string */
|
||||
PHPAPI ulong
|
||||
PHPAPI ulong
|
||||
mysqlnd_old_escape_string(char * newstr, const char * escapestr, size_t escapestr_len TSRMLS_DC)
|
||||
{
|
||||
DBG_ENTER("mysqlnd_old_escape_string");
|
||||
@@ -1751,7 +1765,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, statistic)(MYSQLND_CONN_DATA * conn, char **me
|
||||
|
||||
if (PASS == (ret = PACKET_READ(stats_header, conn))) {
|
||||
/* will be freed by Zend, thus don't use the mnd_ allocator */
|
||||
*message = estrndup(stats_header->message, stats_header->message_len);
|
||||
*message = estrndup(stats_header->message, stats_header->message_len);
|
||||
*message_len = stats_header->message_len;
|
||||
DBG_INF(*message);
|
||||
}
|
||||
@@ -1877,7 +1891,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, shutdown)(MYSQLND_CONN_DATA * const conn, uint
|
||||
|
||||
conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
|
||||
}
|
||||
DBG_RETURN(ret);
|
||||
DBG_RETURN(ret);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -2379,7 +2393,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, set_client_option)(MYSQLND_CONN_DATA * const c
|
||||
ret = FAIL;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
new_charset_name = mnd_pestrdup(value, conn->persistent);
|
||||
if (!new_charset_name) {
|
||||
goto oom;
|
||||
@@ -2458,11 +2472,11 @@ MYSQLND_METHOD(mysqlnd_conn_data, set_client_option)(MYSQLND_CONN_DATA * const c
|
||||
default:
|
||||
ret = FAIL;
|
||||
}
|
||||
conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
|
||||
conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
|
||||
DBG_RETURN(ret);
|
||||
oom:
|
||||
SET_OOM_ERROR(*conn->error_info);
|
||||
conn->m->local_tx_end(conn, this_func, FAIL TSRMLS_CC);
|
||||
conn->m->local_tx_end(conn, this_func, FAIL TSRMLS_CC);
|
||||
end:
|
||||
DBG_RETURN(FAIL);
|
||||
}
|
||||
@@ -2539,7 +2553,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, set_client_option_2d)(MYSQLND_CONN_DATA * cons
|
||||
DBG_RETURN(ret);
|
||||
oom:
|
||||
SET_OOM_ERROR(*conn->error_info);
|
||||
conn->m->local_tx_end(conn, this_func, FAIL TSRMLS_CC);
|
||||
conn->m->local_tx_end(conn, this_func, FAIL TSRMLS_CC);
|
||||
end:
|
||||
DBG_RETURN(FAIL);
|
||||
}
|
||||
@@ -2580,7 +2594,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, use_result)(MYSQLND_CONN_DATA * const conn, co
|
||||
conn->current_result = NULL;
|
||||
} while (0);
|
||||
|
||||
conn->m->local_tx_end(conn, this_func, result == NULL? FAIL:PASS TSRMLS_CC);
|
||||
conn->m->local_tx_end(conn, this_func, result == NULL? FAIL:PASS TSRMLS_CC);
|
||||
}
|
||||
|
||||
DBG_RETURN(result);
|
||||
@@ -2638,7 +2652,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, store_result)(MYSQLND_CONN_DATA * const conn,
|
||||
conn->current_result = NULL;
|
||||
} while (0);
|
||||
|
||||
conn->m->local_tx_end(conn, this_func, result == NULL? FAIL:PASS TSRMLS_CC);
|
||||
conn->m->local_tx_end(conn, this_func, result == NULL? FAIL:PASS TSRMLS_CC);
|
||||
}
|
||||
DBG_RETURN(result);
|
||||
}
|
||||
@@ -2667,7 +2681,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, set_autocommit)(MYSQLND_CONN_DATA * conn, unsi
|
||||
|
||||
if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
|
||||
ret = conn->m->query(conn, (mode) ? "SET AUTOCOMMIT=1":"SET AUTOCOMMIT=0", sizeof("SET AUTOCOMMIT=1") - 1 TSRMLS_CC);
|
||||
conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
|
||||
conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
|
||||
}
|
||||
|
||||
DBG_RETURN(ret);
|
||||
|
||||
+8
-2
@@ -2119,7 +2119,7 @@ char *tsrm_strtok_r(char *s, const char *delim, char **last) /* {{{ */
|
||||
*/
|
||||
char *phar_fix_filepath(char *path, int *new_len, int use_cwd TSRMLS_DC) /* {{{ */
|
||||
{
|
||||
char newpath[MAXPATHLEN];
|
||||
char *newpath;
|
||||
int newpath_len;
|
||||
char *ptr;
|
||||
char *tok;
|
||||
@@ -2127,8 +2127,10 @@ char *phar_fix_filepath(char *path, int *new_len, int use_cwd TSRMLS_DC) /* {{{
|
||||
|
||||
if (PHAR_G(cwd_len) && use_cwd && path_length > 2 && path[0] == '.' && path[1] == '/') {
|
||||
newpath_len = PHAR_G(cwd_len);
|
||||
newpath = emalloc(strlen(path) + newpath_len + 1);
|
||||
memcpy(newpath, PHAR_G(cwd), newpath_len);
|
||||
} else {
|
||||
newpath = emalloc(strlen(path) + 2);
|
||||
newpath[0] = '/';
|
||||
newpath_len = 1;
|
||||
}
|
||||
@@ -2151,6 +2153,7 @@ char *phar_fix_filepath(char *path, int *new_len, int use_cwd TSRMLS_DC) /* {{{
|
||||
if (*tok == '.') {
|
||||
efree(path);
|
||||
*new_len = 1;
|
||||
efree(newpath);
|
||||
return estrndup("/", 1);
|
||||
}
|
||||
break;
|
||||
@@ -2158,9 +2161,11 @@ char *phar_fix_filepath(char *path, int *new_len, int use_cwd TSRMLS_DC) /* {{{
|
||||
if (tok[0] == '.' && tok[1] == '.') {
|
||||
efree(path);
|
||||
*new_len = 1;
|
||||
efree(newpath);
|
||||
return estrndup("/", 1);
|
||||
}
|
||||
}
|
||||
efree(newpath);
|
||||
return path;
|
||||
}
|
||||
|
||||
@@ -2209,7 +2214,8 @@ last_time:
|
||||
|
||||
efree(path);
|
||||
*new_len = newpath_len;
|
||||
return estrndup(newpath, newpath_len);
|
||||
newpath[newpath_len] = '\0';
|
||||
return erealloc(newpath, newpath_len + 1);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
+47
-40
@@ -1252,7 +1252,7 @@ PHP_METHOD(Phar, __construct)
|
||||
INIT_PZVAL(&arg2);
|
||||
ZVAL_LONG(&arg2, flags);
|
||||
|
||||
zend_call_method_with_2_params(&zobj, Z_OBJCE_P(zobj),
|
||||
zend_call_method_with_2_params(&zobj, Z_OBJCE_P(zobj),
|
||||
&spl_ce_RecursiveDirectoryIterator->constructor, "__construct", NULL, &arg1, &arg2);
|
||||
|
||||
if (!phar_data->is_persistent) {
|
||||
@@ -1276,7 +1276,7 @@ PHP_METHOD(Phar, getSupportedSignatures)
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
array_init(return_value);
|
||||
|
||||
add_next_index_stringl(return_value, "MD5", 3, 1);
|
||||
@@ -1303,7 +1303,7 @@ PHP_METHOD(Phar, getSupportedCompression)
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
array_init(return_value);
|
||||
phar_request_initialize(TSRMLS_C);
|
||||
|
||||
@@ -1548,7 +1548,7 @@ phar_spl_fileinfo:
|
||||
}
|
||||
return ZEND_HASH_APPLY_STOP;
|
||||
}
|
||||
|
||||
|
||||
base = temp;
|
||||
base_len = strlen(base);
|
||||
|
||||
@@ -1737,7 +1737,7 @@ after_open_fp:
|
||||
/* {{{ proto array Phar::buildFromDirectory(string base_dir[, string regex])
|
||||
* Construct a phar archive from an existing directory, recursively.
|
||||
* Optional second parameter is a regular expression for filtering directory contents.
|
||||
*
|
||||
*
|
||||
* Return value is an array mapping phar index to actual files added.
|
||||
*/
|
||||
PHP_METHOD(Phar, buildFromDirectory)
|
||||
@@ -1773,7 +1773,7 @@ PHP_METHOD(Phar, buildFromDirectory)
|
||||
INIT_PZVAL(&arg2);
|
||||
ZVAL_LONG(&arg2, SPL_FILE_DIR_SKIPDOTS|SPL_FILE_DIR_UNIXPATHS);
|
||||
|
||||
zend_call_method_with_2_params(&iter, spl_ce_RecursiveDirectoryIterator,
|
||||
zend_call_method_with_2_params(&iter, spl_ce_RecursiveDirectoryIterator,
|
||||
&spl_ce_RecursiveDirectoryIterator->constructor, "__construct", NULL, &arg, &arg2);
|
||||
|
||||
if (EG(exception)) {
|
||||
@@ -1790,7 +1790,7 @@ PHP_METHOD(Phar, buildFromDirectory)
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
zend_call_method_with_1_params(&iteriter, spl_ce_RecursiveIteratorIterator,
|
||||
zend_call_method_with_1_params(&iteriter, spl_ce_RecursiveIteratorIterator,
|
||||
&spl_ce_RecursiveIteratorIterator->constructor, "__construct", NULL, iter);
|
||||
|
||||
if (EG(exception)) {
|
||||
@@ -1815,7 +1815,7 @@ PHP_METHOD(Phar, buildFromDirectory)
|
||||
INIT_PZVAL(&arg2);
|
||||
ZVAL_STRINGL(&arg2, regex, regex_len, 0);
|
||||
|
||||
zend_call_method_with_2_params(®exiter, spl_ce_RegexIterator,
|
||||
zend_call_method_with_2_params(®exiter, spl_ce_RegexIterator,
|
||||
&spl_ce_RegexIterator->constructor, "__construct", NULL, iteriter, &arg2);
|
||||
}
|
||||
|
||||
@@ -2019,9 +2019,10 @@ static int phar_copy_file_contents(phar_entry_info *entry, php_stream *fp TSRMLS
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
static zval *phar_rename_archive(phar_archive_data *phar, char *ext, zend_bool compress TSRMLS_DC) /* {{{ */
|
||||
static zval *phar_rename_archive(phar_archive_data **sphar, char *ext, zend_bool compress TSRMLS_DC) /* {{{ */
|
||||
{
|
||||
const char *oldname = NULL;
|
||||
phar_archive_data *phar = *sphar;
|
||||
char *oldpath = NULL;
|
||||
char *basename = NULL, *basepath = NULL;
|
||||
char *newname = NULL, *newpath = NULL;
|
||||
@@ -2103,7 +2104,7 @@ static zval *phar_rename_archive(phar_archive_data *phar, char *ext, zend_bool c
|
||||
spprintf(&newname, 0, "%s.%s", strtok(basename, "."), ext);
|
||||
efree(basename);
|
||||
|
||||
|
||||
|
||||
|
||||
basepath = estrndup(oldpath, (strlen(oldpath) - oldname_len));
|
||||
phar->fname_len = spprintf(&newpath, 0, "%s%s", basepath, newname);
|
||||
@@ -2128,7 +2129,9 @@ static zval *phar_rename_archive(phar_archive_data *phar, char *ext, zend_bool c
|
||||
(*pphar)->fp = phar->fp;
|
||||
phar->fp = NULL;
|
||||
phar_destroy_phar_data(phar TSRMLS_CC);
|
||||
*sphar = NULL;
|
||||
phar = *pphar;
|
||||
*sphar = NULL;
|
||||
phar->refcount++;
|
||||
newpath = oldpath;
|
||||
goto its_ok;
|
||||
@@ -2335,15 +2338,19 @@ no_copy:
|
||||
phar_add_virtual_dirs(phar, newentry.filename, newentry.filename_len TSRMLS_CC);
|
||||
}
|
||||
|
||||
if ((ret = phar_rename_archive(phar, ext, 0 TSRMLS_CC))) {
|
||||
if ((ret = phar_rename_archive(&phar, ext, 0 TSRMLS_CC))) {
|
||||
return ret;
|
||||
} else {
|
||||
zend_hash_destroy(&(phar->manifest));
|
||||
zend_hash_destroy(&(phar->mounted_dirs));
|
||||
zend_hash_destroy(&(phar->virtual_dirs));
|
||||
php_stream_close(phar->fp);
|
||||
efree(phar->fname);
|
||||
efree(phar);
|
||||
if(phar != NULL) {
|
||||
zend_hash_destroy(&(phar->manifest));
|
||||
zend_hash_destroy(&(phar->mounted_dirs));
|
||||
zend_hash_destroy(&(phar->virtual_dirs));
|
||||
if (phar->fp) {
|
||||
php_stream_close(phar->fp);
|
||||
}
|
||||
efree(phar->fname);
|
||||
efree(phar);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
@@ -2561,7 +2568,7 @@ PHP_METHOD(Phar, convertToData)
|
||||
PHP_METHOD(Phar, isCompressed)
|
||||
{
|
||||
PHAR_ARCHIVE_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -2585,7 +2592,7 @@ PHP_METHOD(Phar, isWritable)
|
||||
{
|
||||
php_stream_statbuf ssb;
|
||||
PHAR_ARCHIVE_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -2663,7 +2670,7 @@ PHP_METHOD(Phar, delete)
|
||||
PHP_METHOD(Phar, getAlias)
|
||||
{
|
||||
PHAR_ARCHIVE_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -2680,7 +2687,7 @@ PHP_METHOD(Phar, getAlias)
|
||||
PHP_METHOD(Phar, getPath)
|
||||
{
|
||||
PHAR_ARCHIVE_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -2796,7 +2803,7 @@ valid_alias:
|
||||
PHP_METHOD(Phar, getVersion)
|
||||
{
|
||||
PHAR_ARCHIVE_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -2811,7 +2818,7 @@ PHP_METHOD(Phar, getVersion)
|
||||
PHP_METHOD(Phar, startBuffering)
|
||||
{
|
||||
PHAR_ARCHIVE_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -2826,7 +2833,7 @@ PHP_METHOD(Phar, startBuffering)
|
||||
PHP_METHOD(Phar, isBuffering)
|
||||
{
|
||||
PHAR_ARCHIVE_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -2843,7 +2850,7 @@ PHP_METHOD(Phar, stopBuffering)
|
||||
char *error;
|
||||
|
||||
PHAR_ARCHIVE_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -3078,7 +3085,7 @@ PHP_METHOD(Phar, setSignatureAlgorithm)
|
||||
PHP_METHOD(Phar, getSignature)
|
||||
{
|
||||
PHAR_ARCHIVE_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -3122,7 +3129,7 @@ PHP_METHOD(Phar, getSignature)
|
||||
PHP_METHOD(Phar, getModified)
|
||||
{
|
||||
PHAR_ARCHIVE_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -3384,7 +3391,7 @@ PHP_METHOD(Phar, decompressFiles)
|
||||
{
|
||||
char *error;
|
||||
PHAR_ARCHIVE_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -3901,7 +3908,7 @@ PHP_METHOD(Phar, getStub)
|
||||
phar_entry_info *stub;
|
||||
|
||||
PHAR_ARCHIVE_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -4004,7 +4011,7 @@ PHP_METHOD(Phar, hasMetadata)
|
||||
PHP_METHOD(Phar, getMetadata)
|
||||
{
|
||||
PHAR_ARCHIVE_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -4452,7 +4459,7 @@ PHP_METHOD(PharFileInfo, __construct)
|
||||
INIT_PZVAL(&arg1);
|
||||
ZVAL_STRINGL(&arg1, fname, fname_len, 0);
|
||||
|
||||
zend_call_method_with_1_params(&zobj, Z_OBJCE_P(zobj),
|
||||
zend_call_method_with_1_params(&zobj, Z_OBJCE_P(zobj),
|
||||
&spl_ce_SplFileInfo->constructor, "__construct", NULL, &arg1);
|
||||
}
|
||||
/* }}} */
|
||||
@@ -4490,7 +4497,7 @@ PHP_METHOD(PharFileInfo, __destruct)
|
||||
PHP_METHOD(PharFileInfo, getCompressedSize)
|
||||
{
|
||||
PHAR_ENTRY_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -4532,7 +4539,7 @@ PHP_METHOD(PharFileInfo, isCompressed)
|
||||
PHP_METHOD(PharFileInfo, getCRC32)
|
||||
{
|
||||
PHAR_ENTRY_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -4558,7 +4565,7 @@ PHP_METHOD(PharFileInfo, getCRC32)
|
||||
PHP_METHOD(PharFileInfo, isCRCChecked)
|
||||
{
|
||||
PHAR_ENTRY_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -4573,7 +4580,7 @@ PHP_METHOD(PharFileInfo, isCRCChecked)
|
||||
PHP_METHOD(PharFileInfo, getPharFlags)
|
||||
{
|
||||
PHAR_ENTRY_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -4651,7 +4658,7 @@ PHP_METHOD(PharFileInfo, chmod)
|
||||
PHP_METHOD(PharFileInfo, hasMetadata)
|
||||
{
|
||||
PHAR_ENTRY_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -4666,7 +4673,7 @@ PHP_METHOD(PharFileInfo, hasMetadata)
|
||||
PHP_METHOD(PharFileInfo, getMetadata)
|
||||
{
|
||||
PHAR_ENTRY_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -4747,7 +4754,7 @@ PHP_METHOD(PharFileInfo, delMetadata)
|
||||
char *error;
|
||||
|
||||
PHAR_ENTRY_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -4805,7 +4812,7 @@ PHP_METHOD(PharFileInfo, getContent)
|
||||
phar_entry_info *link;
|
||||
|
||||
PHAR_ENTRY_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
@@ -4979,7 +4986,7 @@ PHP_METHOD(PharFileInfo, decompress)
|
||||
{
|
||||
char *error;
|
||||
PHAR_ENTRY_OBJECT();
|
||||
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
--TEST--
|
||||
Phar: bug #69958: Segfault in Phar::convertToData on invalid file
|
||||
--XFAIL--
|
||||
Still has memory leaks, see https://bugs.php.net/bug.php?id=70005
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("phar")) die("skip"); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
$tarphar = new PharData(__DIR__.'/bug69958.tar');
|
||||
$phar = $tarphar->convertToData(Phar::TAR);
|
||||
--EXPECTF--
|
||||
Fatal error: Uncaught exception 'BadMethodCallException' with message 'phar "%s/bug69958.tar" exists and must be unlinked prior to conversion' in %s/bug69958.php:%d
|
||||
Stack trace:
|
||||
#0 %s/bug69958.php(%d): PharData->convertToData(%d)
|
||||
#1 {main}
|
||||
thrown in %s/bug69958.php on line %d
|
||||
Binary file not shown.
@@ -910,7 +910,7 @@ static void from_zval_write_control(const zval *arr,
|
||||
if (space_left < req_space) {
|
||||
*control_buf = safe_erealloc(*control_buf, 2, req_space, *control_len);
|
||||
*control_len += 2 * req_space;
|
||||
memset(*control_buf + *offset, '\0', *control_len - *offset);
|
||||
memset((char *)*control_buf + *offset, '\0', *control_len - *offset);
|
||||
memcpy(&alloc->data, control_buf, sizeof *control_buf);
|
||||
}
|
||||
|
||||
|
||||
@@ -380,9 +380,11 @@ next_step:
|
||||
}
|
||||
}
|
||||
}
|
||||
iterator->funcs->dtor(iterator TSRMLS_CC);
|
||||
zval_ptr_dtor(&object->iterators[object->level].zobject);
|
||||
object->level--;
|
||||
if (object->level > 0) {
|
||||
iterator->funcs->dtor(iterator TSRMLS_CC);
|
||||
zval_ptr_dtor(&object->iterators[object->level].zobject);
|
||||
object->level--;
|
||||
}
|
||||
} else {
|
||||
return; /* done completeley */
|
||||
}
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
--TEST--
|
||||
Bug #69970 (Use-after-free vulnerability in spl_recursive_it_move_forward_ex())
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$count = 10;
|
||||
|
||||
class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator {
|
||||
function rewind() {
|
||||
echo "dummy\n";
|
||||
}
|
||||
function endChildren() {
|
||||
global $count;
|
||||
echo $this->getDepth();
|
||||
if (--$count > 0) {
|
||||
// Trigger use-after-free
|
||||
parent::rewind();
|
||||
}
|
||||
}
|
||||
}
|
||||
$arr = array("a", array("ba", array("bba", "bbb")));
|
||||
$obj = new RecursiveArrayIterator($arr);
|
||||
$rit = new RecursiveArrayIteratorIterator($obj);
|
||||
|
||||
foreach ($rit as $k => $v) {
|
||||
echo ($rit->getDepth()) . "$k=>$v\n";
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
dummy
|
||||
00=>a
|
||||
00=>a
|
||||
10=>ba
|
||||
20=>bba
|
||||
21=>bbb
|
||||
21010=>ba
|
||||
20=>bba
|
||||
21=>bbb
|
||||
21010=>ba
|
||||
20=>bba
|
||||
21=>bbb
|
||||
21010=>ba
|
||||
20=>bba
|
||||
21=>bbb
|
||||
21
|
||||
+10
-2
@@ -287,7 +287,11 @@ PHP_METHOD(sqlite3, lastErrorCode)
|
||||
return;
|
||||
}
|
||||
|
||||
RETURN_LONG(sqlite3_errcode(db_obj->db));
|
||||
if (db_obj->initialised) {
|
||||
RETURN_LONG(sqlite3_errcode(db_obj->db));
|
||||
} else {
|
||||
RETURN_LONG(0);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -305,7 +309,11 @@ PHP_METHOD(sqlite3, lastErrorMsg)
|
||||
return;
|
||||
}
|
||||
|
||||
RETVAL_STRING((char *)sqlite3_errmsg(db_obj->db), 1);
|
||||
if (db_obj->initialised) {
|
||||
RETURN_STRING((char *)sqlite3_errmsg(db_obj->db), 1);
|
||||
} else {
|
||||
RETURN_EMPTY_STRING();
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
--TEST--
|
||||
Bug #69972 (Use-after-free vulnerability in sqlite3SafetyCheckSickOrOk())
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('sqlite3')) die('skip');
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
$db = new SQLite3(':memory:');
|
||||
echo "SELECTING from invalid table\n";
|
||||
$result = $db->query("SELECT * FROM non_existent_table");
|
||||
echo "Closing database\n";
|
||||
var_dump($db->close());
|
||||
echo "Done\n";
|
||||
|
||||
// Trigger the use-after-free
|
||||
echo "Error Code: " . $db->lastErrorCode() . "\n";
|
||||
echo "Error Msg: " . $db->lastErrorMsg() . "\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
SELECTING from invalid table
|
||||
|
||||
Warning: SQLite3::query(): Unable to prepare statement: 1, no such table: non_existent_table in %sbug69972.php on line %d
|
||||
Closing database
|
||||
bool(true)
|
||||
Done
|
||||
Error Code: 0
|
||||
Error Msg:
|
||||
+1
-1
@@ -226,7 +226,7 @@ void php_mail_log_to_file(char *filename, char *message, size_t message_size TSR
|
||||
static int php_mail_detect_multiple_crlf(char *hdr) {
|
||||
/* This function detects multiple/malformed multiple newlines. */
|
||||
|
||||
if (!hdr) {
|
||||
if (!hdr || !strlen(hdr)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
--TEST--
|
||||
Bug #69874: Null addtional_headers does not send mail
|
||||
--INI--
|
||||
sendmail_path=tee mailBasic.out >/dev/null
|
||||
mail.add_x_header = Off
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if(substr(PHP_OS, 0, 3) == "WIN")
|
||||
die("skip Won't run on Windows");
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : int mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])
|
||||
* Description: Send an email message
|
||||
* Source code: ext/standard/mail.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
echo "*** Testing mail() : send email without additional headers ***\n";
|
||||
|
||||
// Initialise all required variables
|
||||
$to = 'user@company.com';
|
||||
$subject = 'Test Subject';
|
||||
$message = 'A Message';
|
||||
|
||||
$outFile = "mailBasic.out";
|
||||
@unlink($outFile);
|
||||
|
||||
var_dump( mail($to, $subject, $message) );
|
||||
echo file_get_contents($outFile);
|
||||
unlink($outFile);
|
||||
|
||||
?>
|
||||
===DONE===
|
||||
--EXPECTF--
|
||||
*** Testing mail() : send email without additional headers ***
|
||||
bool(true)
|
||||
To: user@company.com
|
||||
Subject: Test Subject
|
||||
|
||||
A Message
|
||||
===DONE===
|
||||
+2
-2
@@ -3,6 +3,6 @@
|
||||
#define PHP_MAJOR_VERSION 5
|
||||
#define PHP_MINOR_VERSION 6
|
||||
#define PHP_RELEASE_VERSION 11
|
||||
#define PHP_EXTRA_VERSION "-dev"
|
||||
#define PHP_VERSION "5.6.11-dev"
|
||||
#define PHP_EXTRA_VERSION ""
|
||||
#define PHP_VERSION "5.6.11"
|
||||
#define PHP_VERSION_ID 50611
|
||||
Reference in new issue
Block a user