summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-02-26 21:44:35 +0100
committerwm4 <wm4@nowhere>2015-02-26 21:44:35 +0100
commita22de99544af562ffa431ab4864b07ec3729088a (patch)
tree52a3de2768fda3182319c221b876644386561fa7
parent0035dbdbb8f33add8a83fa216a4e597de560ec48 (diff)
downloadmpv-a22de99544af562ffa431ab4864b07ec3729088a.tar.bz2
mpv-a22de99544af562ffa431ab4864b07ec3729088a.tar.xz
input: avoid creating world-writeable file with --input-unix-socket
This requires fchmod(), which is not necessarily available everywhere. It also might not work at all. (It does work on Linux.)
-rw-r--r--input/ipc.c4
-rwxr-xr-xold-configure1
-rw-r--r--wscript4
3 files changed, 9 insertions, 0 deletions
diff --git a/input/ipc.c b/input/ipc.c
index 2e17fd4fac..486b9db011 100644
--- a/input/ipc.c
+++ b/input/ipc.c
@@ -725,6 +725,10 @@ static void *ipc_thread(void *p)
goto done;
}
+#if HAVE_FCHMOD
+ fchmod(ipc_fd, 0600);
+#endif
+
size_t path_len = strlen(arg->path);
if (path_len >= sizeof(ipc_un.sun_path) - 1) {
MP_ERR(arg, "Could not create IPC socket\n");
diff --git a/old-configure b/old-configure
index 35af5117e6..2558985b03 100755
--- a/old-configure
+++ b/old-configure
@@ -972,6 +972,7 @@ cat > $TMPC << EOF
#define HAVE_BSD_THREAD_NAME 0
#define HAVE_NETBSD_THREAD_NAME 0
#define HAVE_DXVA2_HWACCEL 0
+#define HAVE_FCHMOD 0
#define DEFAULT_CDROM_DEVICE "/dev/cdrom"
#define DEFAULT_DVD_DEVICE "/dev/dvd"
diff --git a/wscript b/wscript
index 98df760b4c..d3086b9950 100644
--- a/wscript
+++ b/wscript
@@ -219,6 +219,10 @@ iconv support use --disable-iconv.",
'deps_any': [ 'os-win32', 'os-cygwin' ],
'func': check_true
}, {
+ 'name': 'fchmod',
+ 'desc': 'fchmod()',
+ 'func': check_statement('sys/stat.h', 'fchmod(0, 0)'),
+ }, {
'name': 'glibc-thread-name',
'desc': 'GLIBC API for setting thread name',
'func': check_statement('pthread.h',