On 04/09/2013 10:32 AM, Tanu Kaskinen wrote: > Forcing the shm file to be read-only makes shm_unlink() fail on OS X. > Thanks to Albert Zeyer for finding the bug. > > BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=62988 > --- > src/pulsecore/shm.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/src/pulsecore/shm.c b/src/pulsecore/shm.c > index 9f44df3..8aa34fa 100644 > --- a/src/pulsecore/shm.c > +++ b/src/pulsecore/shm.c > @@ -111,6 +111,7 @@ int pa_shm_create_rw(pa_shm *m, size_t size, pa_bool_t shared, mode_t mode) { > pa_assert(m); > pa_assert(size > 0); > pa_assert(size <= MAX_SHM_SIZE); > + pa_assert(!(mode & ~0777)); > pa_assert(mode >= 0600); > > /* Each time we create a new SHM area, let's first drop all stale > @@ -151,7 +152,7 @@ int pa_shm_create_rw(pa_shm *m, size_t size, pa_bool_t shared, mode_t mode) { > pa_random(&m->id, sizeof(m->id)); > segment_name(fn, sizeof(fn), m->id); > > - if ((fd = shm_open(fn, O_RDWR|O_CREAT|O_EXCL, mode & 0444)) < 0) { > + if ((fd = shm_open(fn, O_RDWR|O_CREAT|O_EXCL, mode)) < 0) { > pa_log("shm_open() failed: %s", pa_cstrerror(errno)); > goto fail; > } > Ack. I would probably have done "mode & 0744" instead of skipping the mask completely, but it's only called with the 0700 argument, so it doesn't matter. -- David Henningsson, Canonical Ltd. https://launchpad.net/~diwic