Skip to content

Commit

Permalink
Fetch peer credentials for local sockets
Browse files Browse the repository at this point in the history
Fetch the PID, UID, and GID of the remote side of a local socket
connection in case any users of this library class want to check it.

Change-Id: Ia3230e6bc68ab6f93160df9f5996d2bf744b872c
  • Loading branch information
kruton committed Sep 14, 2010
1 parent 40c2b7c commit 30abb72
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 2 deletions.
13 changes: 13 additions & 0 deletions include/sysutils/SocketClient.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,29 @@
#include "../../../frameworks/base/include/utils/List.h"

#include <pthread.h>
#include <sys/types.h>

class SocketClient {
int mSocket;
pthread_mutex_t mWriteMutex;

/* Peer process ID */
pid_t mPid;

/* Peer user ID */
uid_t mUid;

/* Peer group ID */
gid_t mGid;

public:
SocketClient(int sock);
virtual ~SocketClient() {}

int getSocket() { return mSocket; }
pid_t getPid() const { return mPid; }
uid_t getUid() const { return mUid; }
gid_t getGid() const { return mGid; }

int sendMsg(int code, const char *msg, bool addErrno);
int sendMsg(const char *msg);
Expand Down
20 changes: 18 additions & 2 deletions libsysutils/src/SocketClient.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#include <alloca.h>
#include <errno.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <pthread.h>
#include <string.h>
Expand All @@ -9,9 +10,24 @@

#include <sysutils/SocketClient.h>

SocketClient::SocketClient(int socket) {
mSocket = socket;
SocketClient::SocketClient(int socket)
: mSocket(socket)
, mPid(-1)
, mUid(-1)
, mGid(-1)
{
pthread_mutex_init(&mWriteMutex, NULL);

struct ucred creds;
socklen_t szCreds = sizeof(creds);
memset(&creds, 0, szCreds);

int err = getsockopt(socket, SOL_SOCKET, SO_PEERCRED, &creds, &szCreds);
if (err == 0) {
mPid = creds.pid;
mUid = creds.uid;
mGid = creds.gid;
}
}

int SocketClient::sendMsg(int code, const char *msg, bool addErrno) {
Expand Down

0 comments on commit 30abb72

Please sign in to comment.