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) {
}
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);