]> granicus.if.org Git - php/commitdiff
Fixed pg_version() crash with older postgresql
authorYasuo Ohgaki <yohgaki@php.net>
Wed, 15 Jan 2014 04:32:15 +0000 (13:32 +0900)
committerYasuo Ohgaki <yohgaki@php.net>
Wed, 15 Jan 2014 04:32:15 +0000 (13:32 +0900)
ext/pgsql/pgsql.c

index 29a5b1082bffac869b8c73f1f1c1eaf29bb67001..d51389fcfd403b58404dbb66a5606cd509a9f592 100644 (file)
@@ -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