Fix possible segfault in query cache.
authorTatsuo Ishii <ishii@postgresql.org>
Fri, 7 Nov 2014 00:43:53 +0000 (09:43 +0900)
committerTatsuo Ishii <ishii@postgresql.org>
Fri, 7 Nov 2014 00:48:59 +0000 (09:48 +0900)
In ReadyForQuery, it does not check if session_context->query_context
exists. Thus it could lead to segfault later on if it does not exists.

pool_proto_modules.c

index ba260e0c84456b33673bb6210281a9e2cf26a423..cd1524ebc8bcd5d9ea46c732954a8f24d8d63612 100644 (file)
@@ -1821,7 +1821,8 @@ POOL_STATUS ReadyForQuery(POOL_CONNECTION *frontend,
                                 */
                                if (pool_is_doing_extended_query_message())
                                {
-                                       if (session_context->query_context->query_state[MASTER_NODE_ID] == POOL_EXECUTE_COMPLETE)
+                                       if (session_context->query_context &&
+                                               session_context->query_context->query_state[MASTER_NODE_ID] == POOL_EXECUTE_COMPLETE)
                                        {
                                                pool_handle_query_cache(backend, session_context->query_context->query_w_hex, node, state);
                                                free(session_context->query_context->query_w_hex);