Whamcloud - gitweb
EX-5505 lipe: JSON statistics crashes lpurge
authorAlexandre Ioffe <aioffe@ddn.com>
Wed, 6 Jul 2022 02:58:58 +0000 (19:58 -0700)
committerAndreas Dilger <adilger@whamcloud.com>
Fri, 26 Aug 2022 16:09:42 +0000 (16:09 +0000)
Use json_object_get() before json_object_put()
otherwise json_object_put() call causes crash

Signed-off-by: Alexandre Ioffe <aioffe@ddn.com>
Test-Parameters: trivial testlist=hot-pools
Change-Id: Id5e8f05dd010f6626835176bf854344cd2b58a93
Reviewed-on: https://review.whamcloud.com/47885
Reviewed-by: Alex Zhuravlev <bzzz@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
lipe/src/lpurge.c

index af02d7f..3e9dd09 100644 (file)
@@ -1835,6 +1835,10 @@ static void lpurge_usr2_handle(int sig)
 
        obj_summary = json_object_new_object();
        sum_stats = json_object_new_object();
+       if (!obj_summary || !sum_stats)
+               LX_OOM(0);
+       json_object_get(obj_summary);
+       json_object_get(sum_stats);
 
        json_object_object_add(sum_stats, "min_utime",
                               json_object_new_int64(min_utime == ~0UL ?
@@ -1875,6 +1879,10 @@ static void lpurge_usr2_handle(int sig)
 
                obj_slot = json_object_new_object();
                slot_stats = json_object_new_object();
+               if (!obj_slot || !slot_stats)
+                       LX_OOM(0);
+               json_object_get(obj_slot);
+               json_object_get(slot_stats);
 
                json_object_object_add(slot_stats, "id",
                                       json_object_new_int(i));
@@ -1929,6 +1937,9 @@ static void lpurge_usr2_handle(int sig)
                                goto out;
 
                        obj_stat = json_object_new_object();
+                       if (!obj_stat)
+                               LX_OOM(0);
+                       json_object_get(obj_stat);
 
                        fid = lo->lo_fid;
                        snprintf(fid_buf, sizeof(fid_buf), DFID, PFID(&fid));