summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTanu Kaskinen <tanuk@iki.fi>2018-07-04 13:40:12 +0300
committerTanu Kaskinen <tanuk@iki.fi>2018-07-14 18:53:48 +0300
commit571ccc3318991e51559b06c9ee7fabe35e60b091 (patch)
tree72f1f7300cce24ffec62febf35ecb9540cb47b2a
parentc7e5715075b9a509d116a0ff06370021c687c3f4 (diff)
downloadpulseaudio-571ccc3318991e51559b06c9ee7fabe35e60b091.tar.gz
pipe-sink, pipe-source: fix file permissions
We recently changed the umask of the daemon from 022 to 077, which broke module-pipe-sink in the system mode, because nobody was allowed to read from the pipe. module-pipe-source in the system mode was probably always broken, because the old umask of 022 should prevent anyone from writing to the pipe. This patch uses chmod() after the file creation to set the permissions to 0666, which is what the fkfifo() call tried to set. Bug link: https://bugs.freedesktop.org/show_bug.cgi?id=107070
-rw-r--r--src/modules/module-pipe-sink.c8
-rw-r--r--src/modules/module-pipe-source.c6
2 files changed, 13 insertions, 1 deletions
diff --git a/src/modules/module-pipe-sink.c b/src/modules/module-pipe-sink.c
index fc01206b6..5d3e1a7d6 100644
--- a/src/modules/module-pipe-sink.c
+++ b/src/modules/module-pipe-sink.c
@@ -466,9 +466,15 @@ int pa__init(pa_module *m) {
pa_log("mkfifo('%s'): %s", u->filename, pa_cstrerror(errno));
goto fail;
}
- } else
+ } else {
u->do_unlink_fifo = true;
+ /* Our umask is 077, so the pipe won't be created with the requested
+ * permissions. Let's fix the permissions with chmod(). */
+ if (chmod(u->filename, 0666) < 0)
+ pa_log_warn("chomd('%s'): %s", u->filename, pa_cstrerror(errno));
+ }
+
if ((u->fd = pa_open_cloexec(u->filename, O_RDWR, 0)) < 0) {
pa_log("open('%s'): %s", u->filename, pa_cstrerror(errno));
goto fail;
diff --git a/src/modules/module-pipe-source.c b/src/modules/module-pipe-source.c
index f8284c161..74ec0551a 100644
--- a/src/modules/module-pipe-source.c
+++ b/src/modules/module-pipe-source.c
@@ -243,7 +243,13 @@ int pa__init(pa_module *m) {
if (mkfifo(u->filename, 0666) < 0) {
pa_log("mkfifo('%s'): %s", u->filename, pa_cstrerror(errno));
goto fail;
+ } else {
+ /* Our umask is 077, so the pipe won't be created with the requested
+ * permissions. Let's fix the permissions with chmod(). */
+ if (chmod(u->filename, 0666) < 0)
+ pa_log_warn("chomd('%s'): %s", u->filename, pa_cstrerror(errno));
}
+
if ((u->fd = pa_open_cloexec(u->filename, O_RDWR, 0)) < 0) {
pa_log("open('%s'): %s", u->filename, pa_cstrerror(errno));
goto fail;