From c5ea25a5ea3c1d9f07d61d650d84be7dec13eec8 Mon Sep 17 00:00:00 2001 From: badaix Date: Tue, 11 Feb 2025 22:45:04 +0100 Subject: [PATCH] Fixes --- server/control_requests.hpp | 1 + server/server_settings.hpp | 6 ++++-- server/snapserver.cpp | 2 +- server/streamreader/process_stream.cpp | 10 +++++----- test/test_main.cpp | 14 ++++++-------- 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/server/control_requests.hpp b/server/control_requests.hpp index 8f05248b..e727e504 100644 --- a/server/control_requests.hpp +++ b/server/control_requests.hpp @@ -55,6 +55,7 @@ public: /// Return value std::string result; + /// @return description as json Json toJson() { Json jres; diff --git a/server/server_settings.hpp b/server/server_settings.hpp index fe6dd2f1..13f9d77a 100644 --- a/server/server_settings.hpp +++ b/server/server_settings.hpp @@ -76,9 +76,11 @@ struct ServerSettings /// c'tor Authorization() = default; - /// c'tor - Authorization(const std::vector& conf_roles, const std::vector& conf_users) + void init(const std::vector& conf_roles, const std::vector& conf_users) { + roles.clear(); + users.clear(); + for (const auto& role : conf_roles) roles.emplace_back(std::make_shared(role)); diff --git a/server/snapserver.cpp b/server/snapserver.cpp index e9ffdc1c..b7c5dde5 100644 --- a/server/snapserver.cpp +++ b/server/snapserver.cpp @@ -331,7 +331,7 @@ int main(int argc, char* argv[]) for (size_t n = 0; n < users_value->count(); ++n) users.push_back(users_value->value(n)); - settings.auth = ServerSettings::Authorization(roles, users); + settings.auth.init(roles, users); for (const auto& role : settings.auth.roles) diff --git a/server/streamreader/process_stream.cpp b/server/streamreader/process_stream.cpp index 255a7770..86cc3e7d 100644 --- a/server/streamreader/process_stream.cpp +++ b/server/streamreader/process_stream.cpp @@ -64,14 +64,14 @@ std::string ProcessStream::findExe(const std::string& filename) const return which; /// check in the same path as this binary - char buff[PATH_MAX]; - char szTmp[32]; - sprintf(szTmp, "/proc/%d/exe", getpid()); - ssize_t len = readlink(szTmp, buff, sizeof(buff) - 1); + std::array buff; + std::array szTmp; + sprintf(szTmp.data(), "/proc/%d/exe", getpid()); + ssize_t len = readlink(szTmp.data(), buff.data(), buff.size() - 1); if (len != -1) { buff[len] = '\0'; - return string(buff) + "/" + exe; + return string(buff.data()) + "/" + exe; } return ""; diff --git a/test/test_main.cpp b/test/test_main.cpp index 053f74d0..3b286d32 100644 --- a/test/test_main.cpp +++ b/test/test_main.cpp @@ -724,9 +724,10 @@ TEST_CASE("WildcardMatch") TEST_CASE("Auth") { + ServerSettings::Authorization auth_settings; + auth_settings.enabled = true; { - ServerSettings::Authorization auth_settings({"admin:*"}, {"badaix:secret:admin"}); - auth_settings.enabled = true; + auth_settings.init({"admin:*"}, {"badaix:secret:admin"}); REQUIRE(auth_settings.users.size() == 1); REQUIRE(auth_settings.roles.size() == 1); REQUIRE(auth_settings.users.front().role->role == "admin"); @@ -741,8 +742,7 @@ TEST_CASE("Auth") } { - ServerSettings::Authorization auth_settings({"admin:"}, {"badaix:secret:admin"}); - auth_settings.enabled = true; + auth_settings.init({"admin:"}, {"badaix:secret:admin"}); REQUIRE(auth_settings.users.size() == 1); REQUIRE(auth_settings.roles.size() == 1); REQUIRE(auth_settings.users.front().role->role == "admin"); @@ -756,8 +756,7 @@ TEST_CASE("Auth") } { - ServerSettings::Authorization auth_settings({}, {"badaix:secret:"}); - auth_settings.enabled = true; + auth_settings.init({}, {"badaix:secret:"}); REQUIRE(auth_settings.users.size() == 1); REQUIRE(auth_settings.roles.empty()); REQUIRE(auth_settings.users.front().role->permissions.empty()); @@ -770,8 +769,7 @@ TEST_CASE("Auth") } { - ServerSettings::Authorization auth_settings({"admin:xxx,stream"}, {"badaix:secret:admin"}); - auth_settings.enabled = true; + auth_settings.init({"admin:xxx,stream"}, {"badaix:secret:admin"}); REQUIRE(auth_settings.users.size() == 1); REQUIRE(auth_settings.roles.size() == 1); REQUIRE(auth_settings.users.front().role->permissions.size() == 2);