summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZofia Abramowska <z.abramowska@samsung.com>2016-04-07 12:57:01 +0200
committerTomasz Swierczek <t.swierczek@samsung.com>2016-06-22 22:18:14 -0700
commite4535a7e6b52d38b6b218ac473a0c07ec84f41c2 (patch)
tree1257a3cbb2b4e57b6a01e8b7028bbb964fa7c842
parente7577894248f744606310452be0a78255e20aed2 (diff)
downloadsecurity-manager-e4535a7e6b52d38b6b218ac473a0c07ec84f41c2.tar.gz
security-manager-e4535a7e6b52d38b6b218ac473a0c07ec84f41c2.tar.bz2
security-manager-e4535a7e6b52d38b6b218ac473a0c07ec84f41c2.zip
Return error when private sharing doesn't exist
Change-Id: Ib2f79da356c9b6830afe0654e79f70b627842ec4
-rw-r--r--src/common/service_impl.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/common/service_impl.cpp b/src/common/service_impl.cpp
index a14491f0..65b7bf95 100644
--- a/src/common/service_impl.cpp
+++ b/src/common/service_impl.cpp
@@ -140,6 +140,13 @@ bool isTizen2XVersion(const std::string &version)
return false;
}
+bool sharingExists(const std::string &targetAppName, const std::string &path)
+{
+ int targetPathCount;
+ PrivilegeDb::getInstance().GetTargetPathSharingCount(targetAppName, path, targetPathCount);
+ return targetPathCount != 0;
+}
+
class ScopedTransaction {
public:
ScopedTransaction() : m_isCommited(false) {
@@ -1297,6 +1304,11 @@ int ServiceImpl::dropPrivatePathSharing(
}
for(const auto &path : paths) {
+ if (!sharingExists(targetAppName, path)) {
+ LogError("Sharing doesn't exist: owner=" << ownerAppName
+ << ", target=" << targetAppName << ", path=" << path);
+ return SECURITY_MANAGER_ERROR_INPUT_PARAM;
+ }
std::string pathLabel = SmackLabels::getSmackLabelFromPath(path);
if (pathLabel != SmackLabels::generatePkgLabel(ownerPkgName)) {
std::string generatedPathLabel = SmackLabels::generateSharedPrivateLabel(ownerPkgName, path);