From: Zofia Abramowska Date: Mon, 19 Dec 2016 16:44:09 +0000 (+0100) Subject: Don't accept wrong package id on app uninstall X-Git-Tag: submit/tizen_3.0/20170105.051635~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f2c74b7cb312b3006153338d8c2b5f5a8c652a2e;p=platform%2Fcore%2Fsecurity%2Fsecurity-manager.git Don't accept wrong package id on app uninstall Security-manager service shouldn't accept wrong package id for application uninstall request. Change-Id: Ia6836c6e668d39255069b0d0bf1a554457f25c6f --- diff --git a/src/common/service_impl.cpp b/src/common/service_impl.cpp index 7d610ef9..29d5a66c 100644 --- a/src/common/service_impl.cpp +++ b/src/common/service_impl.cpp @@ -642,15 +642,21 @@ int ServiceImpl::appUninstall(const Credentials &creds, app_inst_req &&req) try { m_priviligeDb.BeginTransaction(); - if (req.pkgName.empty()) - m_priviligeDb.GetAppPkgName(req.appName, req.pkgName); - - if (req.pkgName.empty()) { - LogWarning("Application " << req.appName << - " not found in database while uninstalling"); + std::string pkgName; + m_priviligeDb.GetAppPkgName(req.appName, pkgName); + if (pkgName.empty()) { + LogWarning("Application " << req.appName << " not found in database " + "while uninstalling"); m_priviligeDb.RollbackTransaction(); return SECURITY_MANAGER_SUCCESS; } + if (req.pkgName.empty()) { + req.pkgName = pkgName; + } else if (req.pkgName != pkgName){ + LogWarning("Application " << req.appName << " exists, but wrong package id " + << req.pkgName << " is passed, should be: " << pkgName); + return SECURITY_MANAGER_ERROR_NO_SUCH_OBJECT; + } isPkgHybrid = m_priviligeDb.IsPackageHybrid(req.pkgName); processLabel = getAppProcessLabel(req.appName, req.pkgName);