Fix memory leaks 93/152593/1
authorSangyoon Jang <jeremy.jang@samsung.com>
Tue, 26 Sep 2017 11:19:17 +0000 (20:19 +0900)
committerSangyoon Jang <jeremy.jang@samsung.com>
Tue, 26 Sep 2017 11:19:17 +0000 (20:19 +0900)
Change-Id: I1a2ccfa3b19c1bdf3c2ffacbdc84831ca8f30b68
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
src/package_info.c
src/package_manager.c
tool/main.c

index 28a9782..15f59e4 100644 (file)
@@ -678,9 +678,10 @@ int package_info_create_with_pkginfo(pkgmgrinfo_pkginfo_h pkg_handle, package_in
 {
        package_info_h pkg_info = NULL;
        char *pkg_name = NULL;
+       int ret;
 
-       pkgmgrinfo_pkginfo_get_pkgid(pkg_handle, &pkg_name);
-       if (pkg_name == NULL)
+       ret = pkgmgrinfo_pkginfo_get_pkgid(pkg_handle, &pkg_name);
+       if (ret != PMINFO_R_OK)
                return PACKAGE_MANAGER_ERROR_SYSTEM_ERROR;
 
        pkg_info = calloc(1, sizeof(struct package_info_s));
index 678b5d0..1cbc458 100644 (file)
@@ -1239,8 +1239,10 @@ API int package_manager_get_package_id_by_app_id(const char *app_id, char **pack
        if (pkgmgrinfo_appinfo_get_appinfo(app_id, &pkgmgrinfo_appinfo) != PMINFO_R_OK)
                return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
        retval = pkgmgrinfo_appinfo_get_pkgname(pkgmgrinfo_appinfo, &pkg_id);
-       if (retval != PMINFO_R_OK)
+       if (retval != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo);
                return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
+       }
 
        pkg_id_dup = strdup(pkg_id);
        if (pkg_id_dup == NULL) {
@@ -1370,8 +1372,10 @@ API int package_manager_get_permission_type(const char *app_id, package_manager_
        if (pkgmgrinfo_appinfo_get_appinfo(app_id, &pkgmgrinfo_appinfo) != PMINFO_R_OK)
                return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
        retval = pkgmgrinfo_appinfo_get_permission_type(pkgmgrinfo_appinfo, &permission);
-       if (retval != PMINFO_R_OK)
+       if (retval != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo);
                return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
+       }
 
        if (permission == PMINFO_PERMISSION_NORMAL)
                *permission_type = PACKAGE_MANAGER_PERMISSION_NORMAL;
index 09304d8..4e5eada 100644 (file)
@@ -94,6 +94,12 @@ static int _get_packageinfo(const char *package)
 
        package_info_foreach_cert_info(package_info, _cert_info_cb, NULL);
 
+       free(pkg);
+       free(label);
+       free(icon);
+       free(version);
+       free(type);
+
        ret = package_info_destroy(package_info);
        if (ret != PACKAGE_MANAGER_ERROR_NONE)
                return PACKAGE_MANAGER_ERROR_INVALID_PARAMETER;