diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2020-01-13 13:24:12 +0100 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2020-01-13 13:24:12 +0100 |
commit | 8ea190ba9593da54a711c8c9a1f4a7f8cc198631 (patch) | |
tree | 6100c55343452e34c134cc290f0082aea759ad96 /ext/mysqlnd | |
parent | dc02e68f77f9ec10747111e84d272d8458dcadf4 (diff) | |
parent | b0cdd8cc53c94134d4d61829e07e38f99e73e272 (diff) | |
download | php-git-8ea190ba9593da54a711c8c9a1f4a7f8cc198631.tar.gz |
Merge branch 'PHP-7.4'
* PHP-7.4:
Fix #79084: mysqlnd may fetch wrong column indexes with MYSQLI_BOTH
Diffstat (limited to 'ext/mysqlnd')
-rw-r--r-- | ext/mysqlnd/mysqlnd_result.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/ext/mysqlnd/mysqlnd_result.c b/ext/mysqlnd/mysqlnd_result.c index ad37744c87..3eff974eaa 100644 --- a/ext/mysqlnd/mysqlnd_result.c +++ b/ext/mysqlnd/mysqlnd_result.c @@ -842,8 +842,9 @@ MYSQLND_METHOD(mysqlnd_result_unbuffered, fetch_row)(MYSQLND_RES * result, void const size_t len = (Z_TYPE_P(data) == IS_STRING)? Z_STRLEN_P(data) : 0; if (flags & MYSQLND_FETCH_NUM) { - Z_TRY_ADDREF_P(data); - zend_hash_next_index_insert(row_ht, data); + if (zend_hash_index_add(row_ht, i, data) != NULL) { + Z_TRY_ADDREF_P(data); + } } if (flags & MYSQLND_FETCH_ASSOC) { /* zend_hash_quick_update needs length + trailing zero */ @@ -1099,8 +1100,9 @@ MYSQLND_METHOD(mysqlnd_result_buffered_zval, fetch_row)(MYSQLND_RES * result, vo set->lengths[i] = (Z_TYPE_P(data) == IS_STRING)? Z_STRLEN_P(data) : 0; if (flags & MYSQLND_FETCH_NUM) { - Z_TRY_ADDREF_P(data); - zend_hash_next_index_insert(Z_ARRVAL_P(row), data); + if (zend_hash_index_add(Z_ARRVAL_P(row), i, data) != NULL) { + Z_TRY_ADDREF_P(data); + } } if (flags & MYSQLND_FETCH_ASSOC) { /* zend_hash_quick_update needs length + trailing zero */ @@ -1195,8 +1197,9 @@ MYSQLND_METHOD(mysqlnd_result_buffered_c, fetch_row)(MYSQLND_RES * result, void set->lengths[i] = (Z_TYPE_P(data) == IS_STRING)? Z_STRLEN_P(data) : 0; if (flags & MYSQLND_FETCH_NUM) { - Z_TRY_ADDREF_P(data); - zend_hash_next_index_insert(Z_ARRVAL_P(row), data); + if (zend_hash_index_add(Z_ARRVAL_P(row), i, data)) { + Z_TRY_ADDREF_P(data); + } } if (flags & MYSQLND_FETCH_ASSOC) { /* zend_hash_quick_update needs length + trailing zero */ |