binding: navigation: move get_storage_from_value call within write lock 73/23273/1 8.99.2 icefish/8.99.2 icefish_8.99.2
authorMatt Ranostay <matt.ranostay@konsulko.com>
Fri, 6 Dec 2019 02:21:17 +0000 (18:21 -0800)
committerMatt Ranostay <matt.ranostay@konsulko.com>
Fri, 6 Dec 2019 02:29:47 +0000 (02:29 +0000)
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

index 19913a1..ab7a5b7 100644 (file)
@@ -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);