From fcdb35c32ac70a113c134a66daf9ba28523ff32b Mon Sep 17 00:00:00 2001 From: Andrew Dunstan Date: Thu, 14 Apr 2022 08:57:09 -0400 Subject: [PATCH] Fix transformJsonBehavior Commit 1a36bc9dba8 conained some logic that was a little opaque and could have involved a NULL dereference, as complained about by Coverity. Make the logic more transparent and in doing so avoid the NULL dereference. --- src/backend/parser/parse_expr.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c index 3cbd516152..2f8c5e63fe 100644 --- a/src/backend/parser/parse_expr.c +++ b/src/backend/parser/parse_expr.c @@ -4072,13 +4072,15 @@ static JsonBehavior * transformJsonBehavior(ParseState *pstate, JsonBehavior *behavior, JsonBehaviorType default_behavior) { - JsonBehaviorType behavior_type; - Node *default_expr; - - behavior_type = behavior ? behavior->btype : default_behavior; - default_expr = behavior_type != JSON_BEHAVIOR_DEFAULT ? NULL : - transformExprRecurse(pstate, behavior->default_expr); + JsonBehaviorType behavior_type = default_behavior; + Node *default_expr = NULL; + if (behavior) + { + behavior_type = behavior->btype; + if (behavior_type == JSON_BEHAVIOR_DEFAULT) + default_expr = transformExprRecurse(pstate, behavior->default_expr); + } return makeJsonBehavior(behavior_type, default_expr); }