shmmonitor: allow getting shmids based on session/userid

This commit is contained in:
Alexey Rybalchenko
2021-03-27 13:38:54 +01:00
parent 2c7c46f2fd
commit ed18fd6931
2 changed files with 24 additions and 4 deletions

View File

@@ -195,9 +195,9 @@ struct RegionBlock
// find id for unique shmem name:
// a hash of user id + session id, truncated to 8 characters (to accommodate for name size limit on some systems (MacOS)).
inline std::string makeShmIdStr(const std::string& sessionId)
inline std::string makeShmIdStr(const std::string& sessionId, const std::string& userId)
{
std::string seed((std::to_string(geteuid()) + sessionId));
std::string seed(userId + sessionId);
// generate a 8-digit hex value out of sha256 hash
std::vector<unsigned char> hash(4);
picosha2::hash256(seed.begin(), seed.end(), hash.begin(), hash.end());
@@ -205,6 +205,11 @@ inline std::string makeShmIdStr(const std::string& sessionId)
return picosha2::bytes_to_hex_string(hash.begin(), hash.end());
}
inline std::string makeShmIdStr(const std::string& sessionId)
{
return makeShmIdStr(sessionId, std::to_string(geteuid()));
}
inline uint64_t makeShmIdUint64(const std::string& sessionId)
{
std::string shmId = makeShmIdStr(sessionId);