From: Krzysztof Jackiewicz Date: Wed, 30 Apr 2025 12:29:55 +0000 (+0200) Subject: Skip scoped resource cleanup in child process X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F09%2F323609%2F1;p=platform%2Fcore%2Ftest%2Fsecurity-tests.git Skip scoped resource cleanup in child process Change-Id: I29e9ec760d9e73d4d0ebb593705c3c62c9e54fe9 --- diff --git a/src/ckm/ckm-common.cpp b/src/ckm/ckm-common.cpp index 1569089b..b0adbc50 100644 --- a/src/ckm/ckm-common.cpp +++ b/src/ckm/ckm-common.cpp @@ -194,6 +194,13 @@ void save_data(const char* alias, const char *data, size_t len, int expected_err save_data(alias, data, len, nullptr, expected_err, exportable); } +PidBound::PidBound() : m_pid(getpid()) {} + +bool PidBound::SamePid() const +{ + return getpid() == m_pid; +} + ScopedSaveData::ScopedSaveData(const char* alias, const char *data, int expected_err) : m_alias(alias) { save_data(alias, data, expected_err); @@ -201,6 +208,9 @@ ScopedSaveData::ScopedSaveData(const char* alias, const char *data, int expected ScopedSaveData::~ScopedSaveData() { + if (!SamePid()) + return; + /* * Let it throw. If we can't remove data then remaining tests results will be * unreliable anyway. @@ -215,6 +225,9 @@ ScopedDBUnlock::ScopedDBUnlock(uid_t user_id, const char* passwd) : m_uid(user_i } ScopedDBUnlock::~ScopedDBUnlock() { + if (!SamePid()) + return; + int temp; RUNNER_ASSERT_MSG(CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(m_uid)), CKMCErrorToString(temp)); } diff --git a/src/ckm/ckm-common.h b/src/ckm/ckm-common.h index d7efa38b..76b1b2b4 100644 --- a/src/ckm/ckm-common.h +++ b/src/ckm/ckm-common.h @@ -174,21 +174,33 @@ void save_data(const char* alias, const char *data, int expected_err = CKMC_ERRO void save_data(const char* alias, const char *data, size_t len, int expected_err = CKMC_ERROR_NONE, bool exportable = true); -class ScopedSaveData +class PidBound +{ +public: + PidBound(); + +protected: + bool SamePid() const; + +private: + pid_t m_pid; +}; + +class ScopedSaveData : public PidBound { public: ScopedSaveData(const char* alias, const char *data, int expected_err = CKMC_ERROR_NONE); - virtual ~ScopedSaveData(); + ~ScopedSaveData(); private: std::string m_alias; }; -class ScopedDBUnlock +class ScopedDBUnlock : public PidBound { public: ScopedDBUnlock(uid_t user_id, const char* passwd); - virtual ~ScopedDBUnlock(); + ~ScopedDBUnlock(); private: uid_t m_uid;