diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-04-10 12:18:57 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-04-10 12:18:57 +0200 |
commit | c7a86a38a3f657ab81163ac794450fc7ada2ba3c (patch) | |
tree | 9c09ee675977102b894cea4d0465dc2e5a611d27 /ext/pgsql/php_pgsql.h | |
parent | b55715d61a908f7732d5a2bb6b20a105f372014a (diff) | |
download | php-git-c7a86a38a3f657ab81163ac794450fc7ada2ba3c.tar.gz |
Fix pgsql use after free trying to reuse closed connection
When a connection is closed, we also need to remove the hash entry
from the regular_list, as it now points to freed memory. To do this
store a reverse mapping from the connection to the hash string.
It would be nicer to introduce a wrapping structure for the pgsql
link resource that could store the hash (and notices), but that would
require large changes to the extension, so I'm going for a more
minimal fix here.
Diffstat (limited to 'ext/pgsql/php_pgsql.h')
-rw-r--r-- | ext/pgsql/php_pgsql.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/ext/pgsql/php_pgsql.h b/ext/pgsql/php_pgsql.h index 98b396c9f1..45807ea4eb 100644 --- a/ext/pgsql/php_pgsql.h +++ b/ext/pgsql/php_pgsql.h @@ -319,6 +319,7 @@ ZEND_BEGIN_MODULE_GLOBALS(pgsql) int ignore_notices,log_notices; HashTable notices; /* notice message for each connection */ zend_resource *default_link; /* default link when connection is omitted */ + HashTable hashes; /* hashes for each connection */ ZEND_END_MODULE_GLOBALS(pgsql) ZEND_EXTERN_MODULE_GLOBALS(pgsql) |