Return error when private sharing doesn't exist 69/65169/5
authorZofia Abramowska <z.abramowska@samsung.com>
Thu, 7 Apr 2016 10:57:01 +0000 (12:57 +0200)
committerTomasz Swierczek <t.swierczek@samsung.com>
Thu, 23 Jun 2016 05:18:14 +0000 (22:18 -0700)
Change-Id: Ib2f79da356c9b6830afe0654e79f70b627842ec4

src/common/service_impl.cpp

index a14491f..65b7bf9 100644 (file)
@@ -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);