From: Krzysztof Jackiewicz Date: Tue, 3 Jun 2025 11:57:53 +0000 (+0200) Subject: Remove smack dependency X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Ftizen;p=platform%2Fcore%2Fsecurity%2Fwebauthn.git Remove smack dependency Change-Id: I3c6b9d006abbc63ff65e8371e3d68efce3cc6306 --- diff --git a/packaging/webauthn.spec b/packaging/webauthn.spec index 322a972..1d96ff6 100644 --- a/packaging/webauthn.spec +++ b/packaging/webauthn.spec @@ -73,7 +73,9 @@ License: Apache-2.0 Group: Security/Development BuildRequires: pkgconfig(gtest) BuildRequires: pkgconfig(cynara-admin) +%if "%{?dev_wos}" != "1" BuildRequires: pkgconfig(libsmack) +%endif Requires: %{name} = %{version}-%{release} %description unittests @@ -173,6 +175,9 @@ Base utils gcov objects %endif %if 0%{?no_feature_check:1} || "%_repository" == "emulator" -DNO_FEATURE_CHECK= \ +%endif +%if "%{?dev_wos}" != "1" + -DSMACK_ENABLED=ON \ %endif -DHYBRID_PLUGIN_SO_PATH=%{hybrid_plugin_so_path} \ diff --git a/srcs/server/service.cpp b/srcs/server/service.cpp index c836d8e..97699fe 100644 --- a/srcs/server/service.cpp +++ b/srcs/server/service.cpp @@ -28,9 +28,9 @@ #include #include +#include "cynara.h" #include "request-mc.h" #include "request-ga.h" -#define SMACK_LABEL_LEN 255 namespace WA { @@ -230,7 +230,8 @@ int GenericService::CheckBusyAndCred(SocketManager::ConnectionID connectionID) LogError("Error on get credentials"); return -1; } - if (m_credentials.smack == nowCreds.smack && m_credentials.cred.pid == nowCreds.cred.pid) + if (m_credentials.cynaraClient == nowCreds.cynaraClient && + m_credentials.cred.pid == nowCreds.cred.pid) { return 1; } @@ -279,15 +280,10 @@ int GenericService::GetCredentials(SocketManager::ConnectionID connectionID, Cre } LogDebug("Client PID: " << creds->cred.pid); - std::vector result(SMACK_LABEL_LEN + 1); - length = SMACK_LABEL_LEN; - if (0 != (ret = getsockopt(connectionID.sock, SOL_SOCKET, SO_PEERSEC, result.data(), &length))) - { - LogError("getsockopt for get smack label failed" << get_error_message(ret)); + if (!Cynara::GetClientFromSocket(connectionID.sock, creds->cynaraClient)) return -1; - } - creds->smack.assign(result.data(), length); - LogDebug("Client Smack: " << creds->smack); + + LogDebug("Cynara client: " << creds->cynaraClient); return 0; } diff --git a/srcs/server/service.h b/srcs/server/service.h index 6c05557..a439e3e 100644 --- a/srcs/server/service.h +++ b/srcs/server/service.h @@ -43,7 +43,7 @@ struct Event { MessageBuffer buffer; }; struct Cred { - std::string smack; + std::string cynaraClient; ucred cred; }; @@ -115,7 +115,7 @@ private: int SetCredentials(SocketManager::ConnectionID connectionID); /** - * Get credentials for the connection. The smack label and process ID used to the credentials. + * Get credentials for the connection. The cynara client and process ID used to the credentials. * @param[in] connectionID Socket information for the connection * @param[out] creds Credentials for the connection * @return @c 0 on success, @@ -142,7 +142,6 @@ public: SocketManager::ServiceDescription GetServiceDescription() override { return SocketManager::ServiceDescription { SERVICE_SOCKET, /* path */ - "*" /* smackLabel label (not used, we rely on systemd) */ }; } }; diff --git a/srcs/server/socket-manager.h b/srcs/server/socket-manager.h index 1e51a68..6c76ec9 100644 --- a/srcs/server/socket-manager.h +++ b/srcs/server/socket-manager.h @@ -39,7 +39,6 @@ class SocketManager final { public: struct ServiceDescription { std::string serviceHandlerPath; // Path to file - std::string smackLabel; // Smack label for socket }; struct ConnectionID { diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index b1157f6..7e03141 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -15,17 +15,24 @@ # @file CMakeLists.txt # -PKG_CHECK_MODULES(UNIT_TESTS_DEPS - REQUIRED +SET(UNIT_TESTS_DEP_LIST dlog gtest libsystemd - libsmack cynara-client cynara-creds-socket cynara-admin ) +IF (SMACK_ENABLED) + SET(UNIT_TESTS_DEP_LIST ${UNIT_TESTS_DEP_LIST} libsmack) +ENDIF (SMACK_ENABLED) + +PKG_CHECK_MODULES(UNIT_TESTS_DEPS + REQUIRED + ${UNIT_TESTS_DEP_LIST} + ) + IF(GCOV_BUILD) # coverage data SET(COVERAGE_BUILD_DIR @@ -58,7 +65,6 @@ SET(UNIT_TESTS_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/socket-manager-test.cpp ${CMAKE_CURRENT_SOURCE_DIR}/utils-tests.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cynara-adm.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/privilege-tests.cpp ${PRJ_SRC_SERVER_PATH}/dl-loader.cpp ${PRJ_SRC_SERVER_PATH}/service.cpp @@ -66,6 +72,10 @@ SET(UNIT_TESTS_SOURCES ${PRJ_SRC_SERVER_PATH}/cynara.cpp ) +IF (SMACK_ENABLED) + SET(UNIT_TESTS_SOURCES ${UNIT_TESTS_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/privilege-tests.cpp) +ENDIF (SMACK_ENABLED) + SET_SOURCE_FILES_PROPERTIES( ${UNIT_TESTS_SOURCES} PROPERTIES diff --git a/tests/client-request-test.cpp b/tests/client-request-test.cpp index 593f489..3cd7a4f 100644 --- a/tests/client-request-test.cpp +++ b/tests/client-request-test.cpp @@ -177,7 +177,6 @@ public: SocketManager::ServiceDescription GetServiceDescription() override { return SocketManager::ServiceDescription { TEST_SERVICE_SOCKET, /* path */ - "*" /* smackLabel label (not used, we rely on systemd) */ }; } TestService(std::shared_ptr pluginHybrid) : diff --git a/tests/socket-manager-test.cpp b/tests/socket-manager-test.cpp index 59c77d1..296f3e8 100644 --- a/tests/socket-manager-test.cpp +++ b/tests/socket-manager-test.cpp @@ -34,7 +34,6 @@ public: SocketManager::ServiceDescription GetServiceDescription() override { return SocketManager::ServiceDescription { TEST_SERVICE_SOCKET, /* path */ - "*" /* smackLabel label (not used, we rely on systemd) */ }; } TestService(std::shared_ptr pluginHybrid) :