4f1f3790ca
changes: -fix for security issue in the TiVo demuxer (was patched in pkgsrc) -bugfixes
88 lines
2.5 KiB
Text
88 lines
2.5 KiB
Text
$NetBSD: patch-ar,v 1.3 2012/01/09 17:12:57 drochner Exp $
|
|
|
|
--- modules/misc/inhibit/xdg.c.orig 2011-11-22 20:30:36.000000000 +0000
|
|
+++ modules/misc/inhibit/xdg.c
|
|
@@ -27,7 +27,11 @@
|
|
#include <vlc_inhibit.h>
|
|
#include <assert.h>
|
|
#include <signal.h>
|
|
+#ifdef _POSIX_SPAWN
|
|
+# if (_POSIX_SPAWN >= 0)
|
|
#include <spawn.h>
|
|
+# endif
|
|
+#endif
|
|
#include <sys/wait.h>
|
|
|
|
static int Open (vlc_object_t *);
|
|
@@ -47,7 +51,11 @@ struct vlc_inhibit_sys
|
|
vlc_thread_t thread;
|
|
vlc_cond_t update, inactive;
|
|
vlc_mutex_t lock;
|
|
+#ifdef _POSIX_SPAWN
|
|
+# if (_POSIX_SPAWN >= 0)
|
|
posix_spawnattr_t attr;
|
|
+# endif
|
|
+#endif
|
|
bool suspend, suspended;
|
|
};
|
|
|
|
@@ -67,17 +75,29 @@ static int Open (vlc_object_t *obj)
|
|
vlc_mutex_init (&p_sys->lock);
|
|
vlc_cond_init (&p_sys->update);
|
|
vlc_cond_init (&p_sys->inactive);
|
|
+#ifdef _POSIX_SPAWN
|
|
+# if (_POSIX_SPAWN >= 0)
|
|
posix_spawnattr_init (&p_sys->attr);
|
|
+# endif
|
|
+#endif
|
|
/* Reset signal handlers to default and clear mask in the child process */
|
|
{
|
|
sigset_t set;
|
|
|
|
sigemptyset (&set);
|
|
+#ifdef _POSIX_SPAWN
|
|
+# if (_POSIX_SPAWN >= 0)
|
|
posix_spawnattr_setsigmask (&p_sys->attr, &set);
|
|
+# endif
|
|
+#endif
|
|
sigaddset (&set, SIGPIPE);
|
|
+#ifdef _POSIX_SPAWN
|
|
+# if (_POSIX_SPAWN >= 0)
|
|
posix_spawnattr_setsigdefault (&p_sys->attr, &set);
|
|
posix_spawnattr_setflags (&p_sys->attr, POSIX_SPAWN_SETSIGDEF
|
|
| POSIX_SPAWN_SETSIGMASK);
|
|
+# endif
|
|
+#endif
|
|
}
|
|
p_sys->suspend = false;
|
|
p_sys->suspended = false;
|
|
@@ -106,7 +126,11 @@ static void Close (vlc_object_t *obj)
|
|
|
|
vlc_cancel (p_sys->thread);
|
|
vlc_join (p_sys->thread, NULL);
|
|
+#ifdef _POSIX_SPAWN
|
|
+# if (_POSIX_SPAWN >= 0)
|
|
posix_spawnattr_destroy (&p_sys->attr);
|
|
+# endif
|
|
+#endif
|
|
vlc_cond_destroy (&p_sys->inactive);
|
|
vlc_cond_destroy (&p_sys->update);
|
|
vlc_mutex_destroy (&p_sys->lock);
|
|
@@ -152,6 +176,8 @@ static void *Thread (void *data)
|
|
pid_t pid;
|
|
|
|
vlc_mutex_unlock (&p_sys->lock);
|
|
+#ifdef _POSIX_SPAWN
|
|
+# if (_POSIX_SPAWN >= 0)
|
|
if (!posix_spawnp (&pid, "xdg-screensaver", NULL, &p_sys->attr,
|
|
argv, environ))
|
|
{
|
|
@@ -162,6 +188,8 @@ static void *Thread (void *data)
|
|
while (waitpid (pid, &status, 0) == -1);
|
|
}
|
|
else/* We don't handle the error, but busy looping would be worse :( */
|
|
+# endif
|
|
+#endif
|
|
msg_Warn (ih, "could not start xdg-screensaver");
|
|
|
|
vlc_mutex_lock (&p_sys->lock);
|