diff options
| author | Yasuo Ohgaki <yohgaki@php.net> | 2014-01-15 13:32:15 +0900 |
|---|---|---|
| committer | Yasuo Ohgaki <yohgaki@php.net> | 2014-01-15 13:32:15 +0900 |
| commit | d0924c2500f06129ac2b66bb022be4dcc1f0bb7e (patch) | |
| tree | e8c8fd69c0b7cabca5547a7e1252a795779b7b87 /ext/pgsql/pgsql.c | |
| parent | 167eaedcbdb494c87c4f83d2897a9fdb614e7062 (diff) | |
| download | php-git-d0924c2500f06129ac2b66bb022be4dcc1f0bb7e.tar.gz | |
Fixed pg_version() crash with older postgresql
Diffstat (limited to 'ext/pgsql/pgsql.c')
| -rw-r--r-- | ext/pgsql/pgsql.c | 41 |
1 files changed, 31 insertions, 10 deletions
diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c index 29a5b1082b..d51389fcfd 100644 --- a/ext/pgsql/pgsql.c +++ b/ext/pgsql/pgsql.c @@ -1504,17 +1504,38 @@ static void php_pgsql_get_link_info(INTERNAL_FUNCTION_PARAMETERS, int entry_type add_assoc_long(return_value, "protocol", PQprotocolVersion(pgsql)); #if HAVE_PQPARAMETERSTATUS if (PQprotocolVersion(pgsql) >= 3) { + char *tmp; add_assoc_string(return_value, "server", (char*)PQparameterStatus(pgsql, "server_version"), 1); - add_assoc_string(return_value, "server_encoding", (char*)PQparameterStatus(pgsql, "server_encoding"), 1); - add_assoc_string(return_value, "application_name", (char*)PQparameterStatus(pgsql, "application_name"), 1); - add_assoc_string(return_value, "is_superuser", (char*)PQparameterStatus(pgsql, "is_superuser"), 1); - add_assoc_string(return_value, "session_authorization", (char*)PQparameterStatus(pgsql, "session_authorization"), 1); - add_assoc_string(return_value, "DateStyle", (char*)PQparameterStatus(pgsql, "DateStyle"), 1); - add_assoc_string(return_value, "IntervalStyle", (char*)PQparameterStatus(pgsql, "IntervalStyle"), 1); - add_assoc_string(return_value, "TimeZone", (char*)PQparameterStatus(pgsql, "TimeZone"), 1); - add_assoc_string(return_value, "integer_datetimes", (char*)PQparameterStatus(pgsql, "integer_datetimes"), 1); - add_assoc_string(return_value, "standard_conforming_strings", (char*)PQparameterStatus(pgsql, "standard_conforming_strings"), 1); - add_assoc_string(return_value, "server_encoding", (char*)PQparameterStatus(pgsql, "server_encoding"), 1); + if ((tmp = (char*)PQparameterStatus(pgsql, "server_encoding"))) { + add_assoc_string(return_value, "server_encoding", tmp, 1); + } + if ((tmp = (char*)PQparameterStatus(pgsql, "application_name"))) { + add_assoc_string(return_value, "application_name", tmp, 1); + } + if ((tmp = (char*)PQparameterStatus(pgsql, "is_superuser"))) { + add_assoc_string(return_value, "is_superuser", tmp, 1); + } + if ((tmp = (char*)PQparameterStatus(pgsql, "session_authorization"))) { + add_assoc_string(return_value, "session_authorization", tmp, 1); + } + if ((tmp = (char*)PQparameterStatus(pgsql, "DateStyle"))) { + add_assoc_string(return_value, "DateStyle", tmp, 1); + } + if ((tmp = (char*)PQparameterStatus(pgsql, "IntervalStyle"))) { + add_assoc_string(return_value, "IntervalStyle", tmp, 1); + } + if ((tmp = (char*)PQparameterStatus(pgsql, "TimeZone"))) { + add_assoc_string(return_value, "TimeZone", tmp, 1); + } + if ((tmp = (char*)PQparameterStatus(pgsql, "integer_datetimes"))) { + add_assoc_string(return_value, "integer_datetimes", tmp, 1); + } + if ((tmp = (char*)PQparameterStatus(pgsql, "standard_conforming_strings"))) { + add_assoc_string(return_value, "standard_conforming_strings", tmp, 1); + } + if ((tmp = (char*)PQparameterStatus(pgsql, "server_encoding"))) { + add_assoc_string(return_value, "server_encoding", tmp, 1); + } } #endif #endif |
