summaryrefslogtreecommitdiffstats
path: root/socket_server.c
diff options
context:
space:
mode:
authorAndreas Eversberg2008-08-30 08:24:52 +0200
committerAndreas Eversberg2008-08-30 08:24:52 +0200
commitb1ab2b9ac1cfc15d2a8f5850145dd69043cc3ef7 (patch)
tree3c243a71fbb464557fe7b349dd0803bec0c33de3 /socket_server.c
parentFix conversion string warnings, there are lot more like these. (diff)
downloadlcr-b1ab2b9ac1cfc15d2a8f5850145dd69043cc3ef7.tar.gz
lcr-b1ab2b9ac1cfc15d2a8f5850145dd69043cc3ef7.tar.xz
lcr-b1ab2b9ac1cfc15d2a8f5850145dd69043cc3ef7.zip
LCR now runs as a user.
You may change the path of socket and lock files. LCR admin socket's flags can now be altered to allow access to other users. Lock and socket files will now be removed when terminating LCR. modified: Makefile modified: chan_lcr.c modified: default/options.conf modified: lcradmin.c modified: lcrsocket.h modified: main.c modified: options.c modified: options.h modified: socket_server.c
Diffstat (limited to 'socket_server.c')
-rw-r--r--socket_server.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/socket_server.c b/socket_server.c
index 0b6e173..e1853d3 100644
--- a/socket_server.c
+++ b/socket_server.c
@@ -15,7 +15,7 @@
#include <curses.h>
-char *socket_name = SOCKET_NAME;
+char socket_name[128];
int sock = -1;
struct sockaddr_un sock_address;
@@ -36,6 +36,7 @@ int admin_init(void)
}
fhuse++;
memset(&sock_address, 0, sizeof(sock_address));
+ SPRINT(socket_name, SOCKET_NAME, options.lock);
sock_address.sun_family = AF_UNIX;
UCPY(sock_address.sun_path, socket_name);
unlink(socket_name);
@@ -66,6 +67,10 @@ int admin_init(void)
PERROR("Failed to set socket \"%s\" into non-blocking mode. (errno=%d)\n", sock_address.sun_path, errno);
return(-1);
}
+ if (chmod(socket_name, options.socketrights) < 0)
+ {
+ PERROR("Failed to change socket rigts to %d. (errno=%d)\n", options.socketrights, errno);
+ }
return(0);
}
@@ -176,6 +181,8 @@ void admin_cleanup(void)
close(sock);
fhuse--;
}
+
+ unlink(socket_name);
}