From 0119cb4fd006b594c491f255c62b58d3e3fffab7 Mon Sep 17 00:00:00 2001
From: Matt Ranostay <matt.ranostay@konsulko.com>
Date: Thu, 5 Dec 2019 18:21:17 -0800
Subject: [PATCH] binding: navigation: move get_storage_from_value call within
 write lock

json_object returned from get_storage_from_value() needs to be protected
within the write lock. This is to prevent reentrant calls to broadcast() from
accessing it, and running json_object_put()

Bug-AGL: SPEC-2880
Change-Id: I9fdf614728368c75e925e4c5a0f3ca19a7e517e1
Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
---
 binding/navigation-api.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/binding/navigation-api.c b/binding/navigation-api.c
index 19913a1..ab7a5b7 100644
--- a/binding/navigation-api.c
+++ b/binding/navigation-api.c
@@ -135,10 +135,12 @@ static void broadcast(afb_req_t request, const char *name, gboolean cache)
 	json_object *jresp = afb_req_json(request);
 
 	if (cache) {
-		json_object **storage = get_storage_from_value(ns, name);
+		json_object **storage;
 
 		g_rw_lock_writer_lock(&ns->rw_lock);
 
+		storage = get_storage_from_value(ns, name);
+
 		if (*storage)
 			json_object_put(*storage);
 
-- 
GitLab