Package: tmux / 1.3-2+squeeze1

04_dropping_unnecessary_privileges.diff Patch series | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# using setresgid() for safely dropping utmp group membership which were needed
# for makesocketpath() to create the user directory under /var/run/tmux which is
# only writeable for processes that have setgid utmp.
--- a/tmux.c
+++ b/tmux.c
@@ -246,6 +246,7 @@
 	size_t			 len;
 	int	 		 opt, flags, quiet = 0, cmdflags = 0;
 	short		 	 events;
+	u_int			gid;
 
 #if defined(DEBUG) && defined(__OpenBSD__)
 	malloc_options = (char *) "AFGJPX";
@@ -473,6 +474,12 @@
 			}
 		}
 	}
+	gid = getgid();
+	/* drop unnecessary privileges which were needed for makesocketpath()
+	 * to create the user directory under /var/run/tmux which is only
+	 * writeable for processes that have setgid utmp. */
+ 	if (setresgid(gid, gid, gid) != 0)
+ 		exit(1);
 	if (label != NULL)
 		xfree(label);