From ebe0bf4f38caa9236e2e1a580772942a7184daad Mon Sep 17 00:00:00 2001 From: Duyoung Jang Date: Fri, 5 Apr 2013 17:43:03 +0900 Subject: [PATCH] Fix prevent issue for package manager Change-Id: Ibada278845c6abd9beca8a0b3873970be7566fad Signed-off-by: Duyoung Jang --- src/app/package/FAppPkg_PackageAppInfoImpl.cpp | 3 +- src/app/package/FAppPkg_PackageInfoImpl.cpp | 12 +++--- src/app/package/FAppPkg_PackageManagerImpl.cpp | 56 ++++++++++++++++---------- 3 files changed, 42 insertions(+), 29 deletions(-) diff --git a/src/app/package/FAppPkg_PackageAppInfoImpl.cpp b/src/app/package/FAppPkg_PackageAppInfoImpl.cpp index c423671..ac447b9 100755 --- a/src/app/package/FAppPkg_PackageAppInfoImpl.cpp +++ b/src/app/package/FAppPkg_PackageAppInfoImpl.cpp @@ -466,7 +466,8 @@ _PackageAppInfoImpl::MetadataHandler(const char* pKey, const char* pValue, void* SysLog(NID_APP, "Key = [%s], Value = [%s]", pKey, pValue); MultiHashMap* pMultiMap = (MultiHashMap*) pUserData; - pMultiMap->Add(*(new (std::nothrow) String(pKey)), *(new (std::nothrow) String(pValue))); + result r = pMultiMap->Add(*(new (std::nothrow) String(pKey)), *(new (std::nothrow) String(pValue))); + SysTryReturn(NID_APP, r == E_SUCCESS, -1, E_SYSTEM, "pMultiMap->Add() failed. [%s]", GetErrorMessage(GetLastResult())); return 0; } diff --git a/src/app/package/FAppPkg_PackageInfoImpl.cpp b/src/app/package/FAppPkg_PackageInfoImpl.cpp index 40421d2..4750878 100755 --- a/src/app/package/FAppPkg_PackageInfoImpl.cpp +++ b/src/app/package/FAppPkg_PackageInfoImpl.cpp @@ -322,10 +322,10 @@ _PackageInfoImpl::GetPackageAppInfoListN(void) PackageAppInfo* pPackageAppInfo = dynamic_cast (__pPackageAppInfoList->GetAt(i)); if (pPackageAppInfo) { - PackageAppInfo* pInfo = new (std::nothrow) PackageAppInfo; + std::unique_ptr< PackageAppInfo > pInfo(new (std::nothrow) PackageAppInfo); SysTryReturn(NID_APP, pInfo, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory"); - _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pInfo); + _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pInfo.get()); SysTryReturn(NID_APP, pPackageAppInfoImpl, null, E_SYSTEM, "pPackageAppInfoImpl is null."); AppId appId = pPackageAppInfo->GetAppId(); @@ -340,7 +340,7 @@ _PackageInfoImpl::GetPackageAppInfoListN(void) pPackageAppInfoImpl->SetMenuIconVisible(menuIconVisible); pPackageAppInfoImpl->SetMainApp(mainApp); - r = pList->Add(*pInfo); + r = pList->Add(*pInfo.release()); } } } @@ -395,10 +395,10 @@ _PackageInfoImpl::GetPackageAppInfoN(const AppId& appId) const _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pPackageAppInfo); SysTryReturn(NID_APP, pPackageAppInfoImpl, null, E_SYSTEM, "pPackageAppInfoImpl is null."); - PackageAppInfo* pInfo = new (std::nothrow) PackageAppInfo; + std::unique_ptr< PackageAppInfo > pInfo(new (std::nothrow) PackageAppInfo); SysTryReturn(NID_APP, pInfo, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory"); - _PackageAppInfoImpl* pImpl = _PackageAppInfoImpl::GetInstance(pInfo); + _PackageAppInfoImpl* pImpl = _PackageAppInfoImpl::GetInstance(pInfo.get()); SysTryReturn(NID_APP, pImpl, null, E_SYSTEM, "pImpl is null."); String appName = pPackageAppInfo->GetAppName(); @@ -414,7 +414,7 @@ _PackageInfoImpl::GetPackageAppInfoN(const AppId& appId) const pImpl->SetMainApp(mainApp); pImpl->SetAppTempIconPath(tempIconPath); - return pInfo; + return pInfo.release(); } } } diff --git a/src/app/package/FAppPkg_PackageManagerImpl.cpp b/src/app/package/FAppPkg_PackageManagerImpl.cpp index 398ec66..156f074 100755 --- a/src/app/package/FAppPkg_PackageManagerImpl.cpp +++ b/src/app/package/FAppPkg_PackageManagerImpl.cpp @@ -729,6 +729,7 @@ _PackageManagerImpl::GetPackageInfoFromFileN(const String& filePath) const SysLog(NID_APP, "packagePath = [%s], extension = [%s]", pPackagePath.get(), pExtension.get()); bool res = true; + result r = E_SUCCESS; if (strcasecmp(pExtension.get(), "tpk") == 0) { @@ -779,25 +780,32 @@ _PackageManagerImpl::GetPackageInfoFromFileN(const String& filePath) const } std::unique_ptr< PackageAppInfo > pPackageAppInfo(new (std::nothrow) PackageAppInfo); - SysTryReturn(NID_APP, pPackageAppInfo, null, E_OUT_OF_MEMORY, "pPackageAppInfo instance must not be null."); + if (pPackageAppInfo) + { + _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pPackageAppInfo.get()); - _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pPackageAppInfo.get()); + pPackageAppInfoImpl->SetAppId(pPkgInfo->pkg_name); + pPackageAppInfoImpl->SetAppName(pPkgInfo->label); + pPackageAppInfoImpl->SetAppDisplayName(pPkgInfo->label); + pPackageAppInfoImpl->SetMainApp(true); + if ((pPkgInfo->icon_buf) && (pPkgInfo->icon_size > 0)) + { + String iconPath("/tmp/icon.png"); + File file; + r = file.Construct(iconPath, "w+"); + r = file.Write(pPkgInfo->icon_buf, pPkgInfo->icon_size); - pPackageAppInfoImpl->SetAppId(pPkgInfo->pkg_name); - pPackageAppInfoImpl->SetAppName(pPkgInfo->label); - pPackageAppInfoImpl->SetAppDisplayName(pPkgInfo->label); - pPackageAppInfoImpl->SetMainApp(true); - if ((pPkgInfo->icon_buf) && (pPkgInfo->icon_size > 0)) - { - String iconPath("/tmp/icon.png"); - File file; - file.Construct(iconPath, "w+"); - file.Write(pPkgInfo->icon_buf, pPkgInfo->icon_size); + pPackageAppInfoImpl->SetAppTempIconPath(iconPath); + } - pPackageAppInfoImpl->SetAppTempIconPath(iconPath); + pPackageInfoImpl->AddPackageAppInfo(*pPackageAppInfo.release()); + } + else + { + SysLog(NID_APP, "pPackageAppInfo instance must not be null."); + pkgmgr_client_free_pkginfo(pPkgmgrInfo); + return null; } - - pPackageInfoImpl->AddPackageAppInfo(*pPackageAppInfo.release()); pkgmgr_client_free_pkginfo(pPkgmgrInfo); } @@ -922,10 +930,10 @@ _PackageManagerImpl::GetPackageAppInfoListN(const IMap& packageAppFilterMap) con pkgmgrinfo_appinfo_metadata_filter_h metaHandle = null; res = pkgmgrinfo_appinfo_filter_create(&handle); - SysTryReturn(NID_APP, res == PMINFO_R_OK, null, E_SYSTEM, "pkgmgrinfo_appinfo_filter_create() is failed. [%d]", res); + SysTryCatch(NID_APP, res == PMINFO_R_OK, , E_SYSTEM, "pkgmgrinfo_appinfo_filter_create() is failed. [%d]", res); res = pkgmgrinfo_appinfo_metadata_filter_create(&metaHandle); - SysTryReturn(NID_APP, res == PMINFO_R_OK, null, E_SYSTEM, "pkgmgrinfo_appinfo_metadata_filter_create() is failed. [%d]", res); + SysTryCatch(NID_APP, res == PMINFO_R_OK, , E_SYSTEM, "pkgmgrinfo_appinfo_metadata_filter_create() is failed. [%d]", res); while(pEnum->MoveNext() == E_SUCCESS) { @@ -1435,14 +1443,15 @@ _PackageManagerImpl::PackageInfoEventHandler(const pkgmgrinfo_pkginfo_h handle, { SysTryReturn(NID_APP, handle != null, 0, E_SYSTEM, "[E_SYSTEM] handle must not be null."); + result r = E_SUCCESS; int result = 0; char* pPackage = null; ArrayList* pList = (ArrayList*)pUserData; - PackageInfo *pPackageInfo = new (std::nothrow) PackageInfo; - SysTryReturn(NID_APP, pPackageInfo != null, 0, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] pPackageInfo instance must not be null."); + std::unique_ptr< PackageInfo > pPackageInfo(new (std::nothrow) PackageInfo); + SysTryReturn(NID_APP, pPackageInfo, null, E_OUT_OF_MEMORY, "pPackageInfo instance must not be null."); - _PackageInfoImpl* pPackageInfoImpl = _PackageInfoImpl::GetInstance(pPackageInfo); + _PackageInfoImpl* pPackageInfoImpl = _PackageInfoImpl::GetInstance(pPackageInfo.get()); result = pkgmgrinfo_pkginfo_get_pkgname(handle, &pPackage); if (result == 0) @@ -1454,8 +1463,11 @@ _PackageManagerImpl::PackageInfoEventHandler(const pkgmgrinfo_pkginfo_h handle, SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_pkgname() is failed. result = [%d]", result); } - pPackageInfoImpl->Construct(pPackage); - pList->Add(*pPackageInfo); + r = pPackageInfoImpl->Construct(pPackage); + SysTryReturn(NID_APP, r == E_SUCCESS, -1, E_SYSTEM, "pPackageInfoImpl->Construct() failed."); + + r = pList->Add(*pPackageInfo.release()); + SysTryReturn(NID_APP, r == E_SUCCESS, -1, E_SYSTEM, "pList->Add() failed."); return result; } -- 2.7.4