From: Matt Ranostay Date: Fri, 6 Dec 2019 02:21:17 +0000 (-0800) Subject: binding: navigation: move get_storage_from_value call within write lock X-Git-Tag: 8.99.2^0 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;h=0119cb4fd006b594c491f255c62b58d3e3fffab7;p=apps%2Fagl-service-navigation.git 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 --- 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);