Commit 70e9f7bc authored by Marina Ciocea's avatar Marina Ciocea Committed by Commit Bot

Add permissions for creating /run/user/$UID/pulse in audio sandbox policy.

On some pulse audio configs, creating a new pulse audio context requires
creating /run/user/$UID/pulse directory and subsequent files in this path.

Bug: 903929,903788
Change-Id: I7cf018a30428e024480c0215f4a17a85dfa826c2
Reviewed-on: https://chromium-review.googlesource.com/c/1331467Reviewed-by: default avatarRobert Sesek <rsesek@chromium.org>
Commit-Queue: Marina Ciocea <marinaciocea@chromium.org>
Cr-Commit-Position: refs/heads/master@{#607931}
parent 6b0833d4
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include "services/audio/audio_sandbox_hook_linux.h" #include "services/audio/audio_sandbox_hook_linux.h"
#include <dlfcn.h> #include <dlfcn.h>
#include <unistd.h>
#include <string> #include <string>
#include <vector> #include <vector>
...@@ -73,6 +74,13 @@ void AddPulseAudioFilePermissions( ...@@ -73,6 +74,13 @@ void AddPulseAudioFilePermissions(
kConfigPulsePath.value()}; kConfigPulsePath.value()};
for (const auto& path : kReadOnlyRecursivePaths) for (const auto& path : kReadOnlyRecursivePaths)
permissions->push_back(BrokerFilePermission::ReadOnlyRecursive(path)); permissions->push_back(BrokerFilePermission::ReadOnlyRecursive(path));
const std::string kRunUserPath = base::StringPrintf("/run/user/%d", getuid());
permissions->push_back(BrokerFilePermission::ReadWriteCreate(kRunUserPath));
permissions->push_back(
BrokerFilePermission::ReadWriteCreate(kRunUserPath + "/pulse"));
permissions->push_back(
BrokerFilePermission::ReadWriteCreateRecursive(kRunUserPath + "/pulse/"));
} }
#endif #endif
...@@ -111,11 +119,14 @@ bool AudioPreSandboxHook(service_manager::SandboxLinux::Options options) { ...@@ -111,11 +119,14 @@ bool AudioPreSandboxHook(service_manager::SandboxLinux::Options options) {
LoadAudioLibraries(); LoadAudioLibraries();
auto* instance = service_manager::SandboxLinux::GetInstance(); auto* instance = service_manager::SandboxLinux::GetInstance();
instance->StartBrokerProcess(MakeBrokerCommandSet({ instance->StartBrokerProcess(MakeBrokerCommandSet({
sandbox::syscall_broker::COMMAND_ACCESS, sandbox::syscall_broker::COMMAND_ACCESS,
sandbox::syscall_broker::COMMAND_OPEN, #if defined(USE_PULSEAUDIO)
sandbox::syscall_broker::COMMAND_READLINK, sandbox::syscall_broker::COMMAND_MKDIR,
sandbox::syscall_broker::COMMAND_STAT, #endif
sandbox::syscall_broker::COMMAND_UNLINK, sandbox::syscall_broker::COMMAND_OPEN,
sandbox::syscall_broker::COMMAND_READLINK,
sandbox::syscall_broker::COMMAND_STAT,
sandbox::syscall_broker::COMMAND_UNLINK,
}), }),
GetAudioFilePermissions(), GetAudioFilePermissions(),
service_manager::SandboxLinux::PreSandboxHook(), service_manager::SandboxLinux::PreSandboxHook(),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment