Fix memory leak 79/179079/1
authorVyacheslav Cherkashin <v.cherkashin@samsung.com>
Fri, 11 May 2018 15:40:24 +0000 (18:40 +0300)
committerVyacheslav Cherkashin <v.cherkashin@samsung.com>
Tue, 15 May 2018 14:14:34 +0000 (17:14 +0300)
Change-Id: I031ae4fa3d897565cb78d45532ab2460d0a1e3e6
Signed-off-by: Vyacheslav Cherkashin <v.cherkashin@samsung.com>
daemon/da_protocol_inst.c

index 2ba2869991db3ccbae26a723572f1042b75a4735..9267c0f51fe14d4d341f4b0e51084b36d35f375e 100644 (file)
@@ -583,29 +583,28 @@ static int feature_add_func_inst_list(struct ld_lib_list_el_t ld_lib,
 static int feature_add_inst_lib(struct ld_lib_list_el_t ld_lib,
                                struct lib_list_t **dest, char *hpath)
 {
-       *dest = new_lib();
-       if (*dest == NULL) {
-               LOGE("lib alloc error\n");
-               return 0;
-       };
-
        if (!check_exec_path(ld_lib.lib_name)) {
                LOGE("bin path parsing error\n");
                return 0;
        }
 
+       *dest = new_lib();
+       if (*dest == NULL) {
+               LOGE("lib alloc error\n");
+               return 0;
+       }
        (*dest)->lib->bin_path = strdup(ld_lib.lib_name);
 
        if (!feature_add_func_inst_list(ld_lib, (struct data_list_t *)*dest,
                                        hpath)) {
                LOGE("funcs parsing error\n");
+               free_lib((*dest));
                return 0;
        }
 
        (*dest)->size += strlen((*dest)->lib->bin_path) + 1 + sizeof((*dest)->func_num);
        (*dest)->hash = calc_lib_hash((*dest)->lib);
        return 1;
-
 }
 
 static enum lib_md5_check ld_lib_check_md5(struct ld_lib_list_el_t *lib_el)