[Archive] Privilege checks moved to JS.
authorPawel Andruszkiewicz <p.andruszkie@samsung.com>
Thu, 30 Apr 2015 11:35:15 +0000 (13:35 +0200)
committerPawel Andruszkiewicz <p.andruszkie@samsung.com>
Mon, 4 May 2015 07:55:06 +0000 (16:55 +0900)
Privileges need to be check before validation of arguments.

Change-Id: I1f58e9b6648e2ad2bdc91c44104d3f04e767e3f0

src/archive/archive_api.js
src/archive/archive_instance.cc

index 39e2d4f..725c587 100644 (file)
@@ -183,6 +183,8 @@ function ArchiveFileEntry(data, priv) {
      * Extracts ArchiveFileEntry to the given location.
      */
     this.extract = function () {
+        xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.FILESYSTEM_WRITE);
+
         var args = validator_.validateArgs(arguments, [
             { name: "destinationDirectory", type: types_.STRING }, //TODO: add FileReferece validation
             { name: "onsuccess", type: types_.FUNCTION, optional: true, nullable: true },
@@ -270,6 +272,8 @@ function ArchiveFile(data) {
      * Adds a new member file to ArchiveFile.
      */
     this.add = function () {
+        xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.FILESYSTEM_WRITE);
+
         var args = validator_.validateArgs(arguments, [
             { name: "sourceFile", type: types_.STRING }, //TODO: add FileReferece validation
             { name: "onsuccess", type: types_.FUNCTION, optional: true, nullable: true },
@@ -334,6 +338,8 @@ function ArchiveFile(data) {
      * Extracts every file from this ArchiveFile to a given directory.
      */
     this.extractAll = function () {
+        xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.FILESYSTEM_WRITE);
+
         var args = validator_.validateArgs(arguments, [
             { name: "destinationDirectory", type: types_.STRING }, //TODO: add FileReferece validation
             { name: "onsuccess", type: types_.FUNCTION, optional: true, nullable: true },
@@ -389,6 +395,8 @@ function ArchiveFile(data) {
      * Retrieves information about the member files in ArchiveFile.
      */
     this.getEntries = function () {
+        xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.FILESYSTEM_READ);
+
         var args = validator_.validateArgs(arguments, [
             { name: "onsuccess", type: types_.FUNCTION },
             { name: "onerror", type: types_.FUNCTION, optional: true, nullable: true }
@@ -427,6 +435,8 @@ function ArchiveFile(data) {
      * Retrieves information about ArchiveFileEntry with the specified name in ArchiveFile.
      */
     this.getEntryByName = function () {
+        xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.FILESYSTEM_READ);
+
         var args = validator_.validateArgs(arguments, [
             { name: "name", type: types_.STRING },
             { name: "onsuccess", type: types_.FUNCTION },
@@ -484,6 +494,8 @@ var ArchiveManager = function () {
  * Opens the archive file. After this operation, it is possible to add or get files to and from the archive.
  */
 ArchiveManager.prototype.open = function () {
+    xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.FILESYSTEM_WRITE);
+
     var args = validator_.validateArgs(arguments, [
         { name: "file", type: types_.STRING }, //TODO: add FileReferece validation
         { name: "mode", type: types_.ENUM, values: ["r", "rw", "w", "a"] },
index 566d4dd..2babd02 100644 (file)
@@ -24,9 +24,6 @@ namespace archive {
 using namespace common;
 
 namespace {
-const std::string kPrivilegeFilesystemRead  = "http://tizen.org/privilege/filesystem.read";
-const std::string kPrivilegeFilesystemWrite  = "http://tizen.org/privilege/filesystem.write";
-
 const std::string kWgtPackagePathName = "wgt-package";
 const std::string kWgtPrivatePathName = "wgt-private";
 const std::string kWgtPrivateTmpPathName = "wgt-private-tmp";
@@ -92,8 +89,6 @@ void ArchiveInstance::Open(const picojson::value& args, picojson::object& out) {
     LoggerD("Entered");
     LoggerD("%s", args.serialize().c_str());
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeFilesystemWrite, &out);
-
     picojson::object data = args.get(JSON_DATA).get<picojson::object>();
     picojson::value v_file = data.at(PARAM_FILE);
     picojson::value v_mode = data.at(PARAM_MODE);
@@ -248,8 +243,6 @@ void ArchiveInstance::Add(const picojson::value& args, picojson::object& out)
     LoggerD("Entered");
     LoggerD("%s", args.serialize().c_str());
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeFilesystemWrite, &out);
-
     picojson::object data = args.get(JSON_DATA).get<picojson::object>();
     picojson::value v_source = data.at(PARAM_SOURCE_FILE);
     picojson::value v_options = data.at(PARAM_OPTIONS);
@@ -337,8 +330,6 @@ void ArchiveInstance::ExtractAll(const picojson::value& args, picojson::object&
     LoggerD("Entered");
     LoggerD("%s", args.serialize().c_str());
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeFilesystemWrite, &out);
-
     picojson::object data = args.get(JSON_DATA).get<picojson::object>();
     picojson::value v_dest_dir = data.at(PARAM_DESTINATION_DIR);
     picojson::value v_overwrite = data.at(PARAM_OVERWRITE);
@@ -401,8 +392,6 @@ void ArchiveInstance::GetEntries(const picojson::value& args, picojson::object&
     LoggerD("Entered");
     LoggerD("%s", args.serialize().c_str());
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeFilesystemRead, &out);
-
     picojson::object data = args.get(JSON_DATA).get<picojson::object>();
     picojson::value v_op_id = data.at(PARAM_OPERATION_ID);
     picojson::value v_handle = data.at(ARCHIVE_FILE_HANDLE);
@@ -447,8 +436,6 @@ void ArchiveInstance::GetEntryByName(const picojson::value& args, picojson::obje
     LoggerD("Entered");
     LoggerD("%s", args.serialize().c_str());
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeFilesystemRead, &out);
-
     picojson::object data = args.get(JSON_DATA).get<picojson::object>();
     picojson::value v_op_id = data.at(PARAM_OPERATION_ID);
     picojson::value v_handle = data.at(ARCHIVE_FILE_HANDLE);
@@ -518,8 +505,6 @@ void ArchiveInstance::Extract(const picojson::value& args, picojson::object& out
     LoggerD("Entered");
     LoggerD("%s", args.serialize().c_str());
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeFilesystemWrite, &out);
-
     picojson::object data = args.get(JSON_DATA).get<picojson::object>();
     picojson::value v_dest_dir = data.at(PARAM_DESTINATION_DIR);
     picojson::value v_strip_name = data.at(PARAM_STRIP_NAME);