OSDN Git Service

Do null-check of error_context_stack before use
authorKyotaro Horiguchi <horikyota.ntt@gmail.com>
Thu, 13 Feb 2020 05:34:01 +0000 (14:34 +0900)
committerKyotaro Horiguchi <horikyota.ntt@gmail.com>
Thu, 13 Feb 2020 05:53:38 +0000 (14:53 +0900)
The variable is accessed without null checking when planner is called
in the context of pl/pgsql. Fix it. Back-patched up to pg_hint_plan94.

Reporter: egashira-yusuke
Issue: https://github.com/ossc-db/pg_hint_plan/issues/42
Original-Author: sun-wei <30999182+Dagouhan@users.noreply.github.com>
Original-patch: https://github.com/ossc-db/pg_hint_plan/pull/45/commits/8fe092ef73a9af6cfb41e20717d7cb35aa74fce2

pg_hint_plan.c

index 1a169d3..a6c9a38 100644 (file)
@@ -3014,6 +3014,8 @@ pg_hint_plan_planner(Query *parse, int cursorOptions, ParamListInfo boundParams)
         * Support for nested plpgsql functions. This is quite ugly but this is the
         * only point I could find where I can get the query string.
         */
+       if (plpgsql_recurse_level > 0 &&
+               error_context_stack && error_context_stack->arg)
        if (plpgsql_recurse_level > 0)
        {
                MemoryContext oldcontext;