From: Pawel Kaczmarczyk
Date: Thu, 18 Jan 2018 12:36:11 +0000 (+0100)
Subject: [Content] Synchronously checking access to file
X-Git-Tag: submit/tizen/20180427.125243~8^2
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8edd2a91d3466ebdffe524df9f1019ef4407f7bc;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git
[Content] Synchronously checking access to file
ACR: http://suprem.sec.samsung.net/jira/browse/TWDAPI-187
Change-Id: I09c965191cd752835cfe4ac2f6ac4fc547541bdb
Signed-off-by: Pawel Kaczmarczyk
---
diff --git a/src/content/content_instance.cc b/src/content/content_instance.cc
index 6f3673ee..736b8698 100644
--- a/src/content/content_instance.cc
+++ b/src/content/content_instance.cc
@@ -510,6 +510,11 @@ void ContentInstance::ContentManagerScanfile(const picojson::value& args, picojs
CHECK_EXIST(args, "callbackId", out)
CHECK_EXIST(args, "contentURI", out)
+ const std::string& contentURI = args.get("contentURI").get();
+ const std::string& real_path = common::FilesystemProvider::Create().GetRealPath(contentURI);
+
+ CHECK_STORAGE_ACCESS(real_path, &out);
+
double callbackId = args.get("callbackId").get();
auto cbData = std::shared_ptr(new ReplyCallbackData);
cbData->callbackId = callbackId;
@@ -532,6 +537,11 @@ void ContentInstance::ContentManagerScanDirectory(const picojson::value& args,
CHECK_EXIST(args, "contentDirURI", out)
CHECK_EXIST(args, "recursive", out)
+ const std::string& contentURI = args.get("contentDirURI").get();
+ const std::string& real_path = common::FilesystemProvider::Create().GetRealPath(contentURI);
+
+ CHECK_STORAGE_ACCESS(real_path, &out);
+
ReplyCallbackData* cbData = new ReplyCallbackData;
cbData->callbackId = args.get("callbackId").get();
cbData->instance = this;
@@ -878,6 +888,11 @@ void ContentInstance::ContentManagerAudioGetLyrics(const picojson::value& args,
picojson::object& out) {
ScopeLogger();
+ const std::string& contentURI = args.get("contentURI").get();
+ const std::string& real_path = common::FilesystemProvider::Create().GetRealPath(contentURI);
+
+ CHECK_STORAGE_ACCESS(real_path, &out);
+
picojson::object lyrics;
if (ContentManager::getInstance()->isConnected()) {
int ret = ContentManager::getInstance()->getLyrics(args, lyrics);
@@ -946,6 +961,10 @@ void ContentInstance::PlaylistSetThumbnailUri(const picojson::value& args, picoj
CHECK_EXIST(args, "uri", out)
int id = static_cast(args.get("id").get());
std::string uri = args.get("uri").get();
+ const std::string& real_path = common::FilesystemProvider::Create().GetRealPath(uri);
+
+ CHECK_STORAGE_ACCESS(real_path, &out);
+
ret = ContentManager::getInstance()->setThumbnailUri(id, uri);
if (ret != MEDIA_CONTENT_ERROR_NONE) {
LogAndReportError(ContentManager::getInstance()->convertError(ret), &out);
diff --git a/src/content/js/datatypes.js b/src/content/js/datatypes.js
index adb826d9..f632dedc 100755
--- a/src/content/js/datatypes.js
+++ b/src/content/js/datatypes.js
@@ -479,6 +479,10 @@ function AudioContent(data) {
if (native_.isFailure(result)) {
utils_.log('Getting lyrics failed for ' + data.contentURI);
+ var error_object = native_.getErrorObject(result);
+ if (WebAPIException.SECURITY_ERR == error_object.code) {
+ throw error_object;
+ }
return;
}