Enlightenment CVS committal
Author : raster
Project : e17
Module : libs/ecore
Dir : e17/libs/ecore/src/lib/ecore_con
Modified Files:
Tag: SPLIT
ecore_con.c
Log Message:
local user sockets are now locked down permission-wise
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_con/Attic/ecore_con.c,v
retrieving revision 1.1.2.9
retrieving revision 1.1.2.10
diff -u -3 -r1.1.2.9 -r1.1.2.10
--- ecore_con.c 8 Apr 2003 08:03:21 -0000 1.1.2.9
+++ ecore_con.c 8 Sep 2003 03:53:58 -0000 1.1.2.10
@@ -110,43 +110,79 @@
{
char *homedir;
struct stat st;
+ mode_t pmode, mask;
if (!name) goto error;
+ mask =
+ S_IRGRP | S_IWGRP | S_IXGRP |
+ S_IROTH | S_IWOTH | S_IXOTH;
if (type == ECORE_CON_LOCAL_USER)
{
- mode_t mask;
-
homedir = getenv("HOME");
if (!homedir) homedir = getenv("TMP");
if (!homedir) homedir = "/tmp";
+ mask = S_IRUSR | S_IWUSR | S_IXUSR;
snprintf(buf, sizeof(buf), "%s/.ecore", homedir);
- mask = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP;
if (stat(buf, &st) < 0) mkdir(buf, mask);
snprintf(buf, sizeof(buf), "%s/.ecore/%s", homedir, name);
if (stat(buf, &st) < 0) mkdir(buf, mask);
snprintf(buf, sizeof(buf), "%s/.ecore/%s/%i", homedir, name, port);
+ mask =
+ S_IRGRP | S_IWGRP | S_IXGRP |
+ S_IROTH | S_IWOTH | S_IXOTH;
}
else if (type == ECORE_CON_LOCAL_SYSTEM)
{
+ mask = 0;
snprintf(buf, sizeof(buf), "/tmp/.ecore_service|%s|%i", name, port);
}
+ pmode = umask(mask);
svr->fd = socket(AF_UNIX, SOCK_STREAM, 0);
- if (svr->fd < 0) goto error;
- if (fcntl(svr->fd, F_SETFL, O_NONBLOCK) < 0) goto error;
- if (fcntl(svr->fd, F_SETFD, FD_CLOEXEC) < 0) goto error;
+ if (svr->fd < 0)
+ {
+ umask(pmode);
+ goto error;
+ }
+ if (fcntl(svr->fd, F_SETFL, O_NONBLOCK) < 0)
+ {
+ umask(pmode);
+ goto error;
+ }
+ if (fcntl(svr->fd, F_SETFD, FD_CLOEXEC) < 0)
+ {
+ umask(pmode);
+ goto error;
+ }
lin.l_onoff = 1;
lin.l_linger = 100;
- if (setsockopt(svr->fd, SOL_SOCKET, SO_LINGER, &lin, sizeof(struct linger)) <
0) goto error;
+ if (setsockopt(svr->fd, SOL_SOCKET, SO_LINGER, &lin, sizeof(struct linger)) <
0)
+ {
+ umask(pmode);
+ goto error;
+ }
socket_unix.sun_family = AF_UNIX;
strncpy(socket_unix.sun_path, buf, sizeof(socket_unix.sun_path));
- if (bind(svr->fd, (struct sockaddr *)&socket_unix,
LENGTH_OF_SOCKADDR_UN(&socket_unix)) < 0) goto error;
- if (listen(svr->fd, 4096) < 0) goto error;
+ if (bind(svr->fd, (struct sockaddr *)&socket_unix,
LENGTH_OF_SOCKADDR_UN(&socket_unix)) < 0)
+ {
+ umask(pmode);
+ goto error;
+ }
+ if (listen(svr->fd, 4096) < 0)
+ {
+ umask(pmode);
+ goto error;
+ }
svr->path = strdup(buf);
- if (!svr->path) goto error;
+ if (!svr->path)
+ {
+ umask(pmode);
+ goto error;
+ }
svr->fd_handler = ecore_main_fd_handler_add(svr->fd,
ECORE_FD_READ,
_ecore_con_svr_handler, svr,
NULL, NULL);
+ umask(pmode);
if (!svr->fd_handler) goto error;
}
else if (type == ECORE_CON_REMOTE_SYSTEM)
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs