Prepare security-manager for master-slave mode
[platform/core/security/security-manager.git] / src / common / service_impl.cpp
index 7fd621c..20ee7a9 100644 (file)
@@ -27,6 +27,7 @@
 #include <grp.h>
 #include <limits.h>
 #include <pwd.h>
+#include <sys/socket.h>
 
 #include <cstring>
 #include <algorithm>
@@ -159,6 +160,20 @@ static inline bool isSubDir(const char *parent, const char *subdir)
     return (*subdir == '/');
 }
 
+bool getPeerID(int sock, uid_t &uid, pid_t &pid)
+{
+    struct ucred cr;
+    socklen_t len = sizeof(cr);
+
+    if (!getsockopt(sock, SOL_SOCKET, SO_PEERCRED, &cr, &len)) {
+        uid = cr.uid;
+        pid = cr.pid;
+        return true;
+    }
+
+    return false;
+}
+
 static bool getUserAppDir(const uid_t &uid, std::string &userAppDir)
 {
     struct tzplatform_context *tz_ctx = nullptr;