Whamcloud - gitweb
LU-10772 utils: incorrect NULL check in free_node() 51/31551/2
authorSonia Sharma <sonia.sharma@intel.com>
Tue, 6 Mar 2018 18:28:09 +0000 (10:28 -0800)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 15 Mar 2018 13:54:32 +0000 (13:54 +0000)
In lnet/utils/lnetconfig/cyaml.c, for free_node()
check first for NULL pointer before dereferencing it.

Issue found in Static analysis

Change-Id: I6298f0f09175b6fd210db5717d44d050b1cb9d8d
Signed-off-by: Sonia Sharma <sonia.sharma@intel.com>
Reviewed-on: https://review.whamcloud.com/31551
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lnet/utils/lnetconfig/cyaml.c

index 7c0ae4e..71b3f49 100644 (file)
@@ -679,13 +679,15 @@ static bool clean_usr_data(struct cYAML *node, void *usr_data, void **out)
 
 static bool free_node(struct cYAML *node, void *user_data, void **out)
 {
 
 static bool free_node(struct cYAML *node, void *user_data, void **out)
 {
+       if (!node)
+               return true;
+
        if (node->cy_type == CYAML_TYPE_STRING)
                free(node->cy_valuestring);
        if (node->cy_string)
                free(node->cy_string);
        if (node->cy_type == CYAML_TYPE_STRING)
                free(node->cy_valuestring);
        if (node->cy_string)
                free(node->cy_string);
-       if (node)
-               free(node);
 
 
+       free(node);
        return true;
 }
 
        return true;
 }