diff options
-rw-r--r-- | src/modules/module-pipe-sink.c | 8 | ||||
-rw-r--r-- | src/modules/module-pipe-source.c | 6 |
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; |