From a22de99544af562ffa431ab4864b07ec3729088a Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 26 Feb 2015 21:44:35 +0100 Subject: 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.) --- input/ipc.c | 4 ++++ old-configure | 1 + wscript | 4 ++++ 3 files changed, 9 insertions(+) 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 @@ -218,6 +218,10 @@ iconv support use --disable-iconv.", 'deps_neg': [ 'glob' ], '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', -- cgit v1.2.3