diff options
-rw-r--r-- | src/manager/main/socket-2-id-mockup.cpp | 2 | ||||
-rw-r--r-- | src/manager/main/socket-2-id-wrapper.cpp | 2 | ||||
-rw-r--r-- | src/manager/main/socket-2-id.cpp | 12 | ||||
-rw-r--r-- | src/manager/main/socket-2-id.h | 1 |
4 files changed, 17 insertions, 0 deletions
diff --git a/src/manager/main/socket-2-id-mockup.cpp b/src/manager/main/socket-2-id-mockup.cpp index 6b21a32e..222976d5 100644 --- a/src/manager/main/socket-2-id-mockup.cpp +++ b/src/manager/main/socket-2-id-mockup.cpp @@ -68,6 +68,8 @@ int Socket2Id::translate(int sock, std::string &result) if (0 > getPkgIdFromSmack(smack, pkgId)) return -1; + mapToDomainLabel(pkgId); + result = std::move(pkgId); return 0; } diff --git a/src/manager/main/socket-2-id-wrapper.cpp b/src/manager/main/socket-2-id-wrapper.cpp index 3d30c4b7..2eb9f369 100644 --- a/src/manager/main/socket-2-id-wrapper.cpp +++ b/src/manager/main/socket-2-id-wrapper.cpp @@ -81,6 +81,8 @@ int Socket2Id::translate(int sock, std::string &result) pkgId = "/" + smack; } + mapToDomainLabel(pkgId); + result = pkgId; m_stringMap.emplace(std::move(smack), std::move(pkgId)); return 0; diff --git a/src/manager/main/socket-2-id.cpp b/src/manager/main/socket-2-id.cpp index a9efe1b0..b6f43c08 100644 --- a/src/manager/main/socket-2-id.cpp +++ b/src/manager/main/socket-2-id.cpp @@ -70,6 +70,18 @@ int Socket2Id::getCredentialsFromSocket(int sock, std::string &res) return assignToString(result, length, res); } +void Socket2Id::mapToDomainLabel(std::string &label) +{ + static const std::string subdomainSep = "::"; + static const auto systemLabelLen = strlen(OWNER_ID_SYSTEM); + + if (label.length() > systemLabelLen + subdomainSep.length() && + label.compare(0, systemLabelLen, OWNER_ID_SYSTEM) == 0 && + label.compare(systemLabelLen, subdomainSep.length(), subdomainSep) == 0) { + label = OWNER_ID_SYSTEM; + } +} + void Socket2Id::resetCache() { m_stringMap.clear(); diff --git a/src/manager/main/socket-2-id.h b/src/manager/main/socket-2-id.h index afa863ab..3e970c28 100644 --- a/src/manager/main/socket-2-id.h +++ b/src/manager/main/socket-2-id.h @@ -36,6 +36,7 @@ public: private: int getCredentialsFromSocket(int sock, std::string &res); + void mapToDomainLabel(std::string &label); typedef std::map<std::string, std::string> StringMap; StringMap m_stringMap; |