From 4ed4e45ef17fd08dc5d4590fe41f8ef8dffe7670 Mon Sep 17 00:00:00 2001 From: Savinda Senevirathne Date: Thu, 29 Jul 2021 15:59:40 +0530 Subject: [PATCH] Contract directory permission fix. (#42) --- src/comm/comm_handler.cpp | 3 +-- src/hp_manager.cpp | 4 ++-- src/util/util.cpp | 1 - src/util/util.hpp | 1 + 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/comm/comm_handler.cpp b/src/comm/comm_handler.cpp index 086bac2..889b44f 100644 --- a/src/comm/comm_handler.cpp +++ b/src/comm/comm_handler.cpp @@ -41,8 +41,7 @@ namespace comm const std::string command = "chown :sashiadmin " + conf::ctx.socket_path; - char mode[] = "0660"; // rw-rw---- - const mode_t permission_mode = strtol(mode, 0, 8); // Char to octal conversion. + const mode_t permission_mode = 0660; // rw-rw---- if (bind(ctx.connection_socket, (const struct sockaddr *)&sock_name, sizeof(struct sockaddr_un)) == -1 || chmod(conf::ctx.socket_path.c_str(), permission_mode) == -1 || diff --git a/src/hp_manager.cpp b/src/hp_manager.cpp index a39903f..1e706f3 100644 --- a/src/hp_manager.cpp +++ b/src/hp_manager.cpp @@ -604,9 +604,9 @@ namespace hp len = 12 + (username.length() * 2) + contract_dir.length(); char own_command[len]; sprintf(own_command, CHOWN_DIR, username.data(), username.data(), contract_dir.data()); - if (system(own_command) != 0) + if (system(own_command) != 0 || chmod(contract_dir.data(), util::DIR_PERMS) == -1) { - LOG_ERROR << "Changing contract ownership failed " << contract_dir; + LOG_ERROR << "Changing contract ownership and permissions failed " << contract_dir; return -1; } diff --git a/src/util/util.cpp b/src/util/util.cpp index fa46401..6330ff8 100644 --- a/src/util/util.cpp +++ b/src/util/util.cpp @@ -3,7 +3,6 @@ namespace util { - constexpr mode_t DIR_PERMS = 0755; constexpr const char *RUN_SH = "chmod +x %s && sudo bash %s %s"; // Enable execute permission before running in case bash script does not have the permission. const std::string to_hex(const std::string_view bin) diff --git a/src/util/util.hpp b/src/util/util.hpp index d4d1cfd..39d0107 100644 --- a/src/util/util.hpp +++ b/src/util/util.hpp @@ -8,6 +8,7 @@ */ namespace util { + constexpr const mode_t DIR_PERMS = 0755; struct user_info { std::string username;