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/tests | |
| 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/tests')
| -rw-r--r-- | ext/pgsql/tests/connect_after_close.phpt | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/ext/pgsql/tests/connect_after_close.phpt b/ext/pgsql/tests/connect_after_close.phpt new file mode 100644 index 0000000000..65f954570b --- /dev/null +++ b/ext/pgsql/tests/connect_after_close.phpt @@ -0,0 +1,19 @@ +--TEST-- +Reopen connection after it was closed +--SKIPIF-- +<?php include("skipif.inc"); ?> +--FILE-- +<?php +include('config.inc'); + +/* Run me under valgrind */ +$db1 = pg_connect($conn_str); +unset($db1); +var_dump(pg_close()); +$db2 = pg_connect($conn_str); +unset($db2); +var_dump(pg_close()); +?> +--EXPECT-- +bool(true) +bool(true) |
