aboutsummaryrefslogtreecommitdiffstats
path: root/src/assuan-socket-server.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2006-09-14 11:17:33 +0000
committerWerner Koch <[email protected]>2006-09-14 11:17:33 +0000
commitf4f90811735b1f599e207e49d449abfa9d47897d (patch)
treeb509639246290da27975771f95b8d46cf57ec60c /src/assuan-socket-server.c
parentMore tweaks for descriptor passing. (diff)
downloadlibassuan-f4f90811735b1f599e207e49d449abfa9d47897d.tar.gz
libassuan-f4f90811735b1f599e207e49d449abfa9d47897d.zip
Preparing a new releaselibassuan-0.9.0
Diffstat (limited to 'src/assuan-socket-server.c')
-rw-r--r--src/assuan-socket-server.c25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/assuan-socket-server.c b/src/assuan-socket-server.c
index 468826e..3cc9bae 100644
--- a/src/assuan-socket-server.c
+++ b/src/assuan-socket-server.c
@@ -43,16 +43,24 @@ accept_connection_bottom (assuan_context_t ctx)
{
int fd = ctx->connected_fd;
+ ctx->peercred.valid = 0;
#ifdef HAVE_SO_PEERCRED
{
- /* This overrides any already set PID if the function returns a
- valid one. */
struct ucred cr;
- int cl = sizeof cr;
-
- if ( !getsockopt (fd, SOL_SOCKET, SO_PEERCRED, &cr, &cl)
- && cr.pid != (pid_t)-1 && cr.pid )
- ctx->pid = cr.pid;
+ socklen_t cl = sizeof cr;
+
+ if ( !getsockopt (fd, SOL_SOCKET, SO_PEERCRED, &cr, &cl))
+ {
+ ctx->peercred.pid = cr.pid;
+ ctx->peercred.uid = cr.uid;
+ ctx->peercred.gid = cr.gid;
+ ctx->peercred.valid = 1;
+
+ /* This overrides any already set PID if the function returns
+ a valid one. */
+ if (cr.pid != (pid_t)-1 && cr.pid)
+ ctx->pid = cr.pid;
+ }
}
#endif
@@ -117,7 +125,8 @@ assuan_init_socket_server (assuan_context_t *r_ctx, int listen_fd)
return assuan_init_socket_server_ext (r_ctx, listen_fd, 0);
}
-/* Initialize a server using the already accepted socket FD. */
+/* Initialize a server using the already accepted socket FD. This
+ fucntion is deprecated. */
int
assuan_init_connected_socket_server (assuan_context_t *r_ctx, int fd)
{