[Messaging] Synchronously checking access to file 97/167597/4
authorPawel Kaczmarczyk <p.kaczmarczy@samsung.com>
Thu, 18 Jan 2018 11:34:57 +0000 (12:34 +0100)
committerPawel Kaczmarczyk <p.kaczmarczy@samsung.com>
Tue, 24 Apr 2018 08:59:20 +0000 (08:59 +0000)
ACR: http://suprem.sec.samsung.net/jira/browse/TWDAPI-187

[Verification] Tested in Chromium console

Passrate with storage privileges:
  tct-messaging-email-tizen-tests: 100%
  tct-messaging-sms-tizen-tests: 100%
  tct-messaging-mms-tizen-tests: 100%

Change-Id: Iacf8b3c647d65e20fc73a810746ff1a536f7507d
Signed-off-by: Pawel Kaczmarczyk <p.kaczmarczy@samsung.com>
src/messaging/messaging_instance.cc

index 2cf41a50a0eefc90398585a4f46e765adbc7df08..915786608410f1b1204a62639296ee75eaa8519a 100644 (file)
@@ -20,6 +20,7 @@
 #include <sstream>
 #include <stdexcept>
 
+#include "common/filesystem/filesystem_provider.h"
 #include "common/logger.h"
 #include "common/tools.h"
 
@@ -203,6 +204,18 @@ void MessagingInstance::MessageServiceSendMessage(const picojson::value& args,
 
   picojson::object data = args.get<picojson::object>();
   picojson::value v_message = data.at(SEND_MESSAGE_ARGS_MESSAGE);
+
+  bool has_attachments = v_message.get("hasAttachment").get<bool>();
+  if (has_attachments) {
+    const auto& attachments = v_message.get("attachments").get<std::vector<picojson::value>>();
+    for (const auto& att : attachments) {
+      const auto& attachment_path = att.get("filePath").get<std::string>();
+      const auto& attachment_real_path =
+          common::FilesystemProvider::Create().GetRealPath(attachment_path);
+      CHECK_STORAGE_ACCESS(attachment_real_path, &out);
+    }
+  }
+
   const double callbackId = args.get(JSON_CALLBACK_ID).get<double>();
 
   auto json = std::shared_ptr<picojson::value>(new picojson::value(picojson::object()));