Commit c52ae8e5 authored by Sergey Ulanov's avatar Sergey Ulanov Committed by Commit Bot

[Fuchsia] Fix FilteredServiceDirectory to copy service name from char*.

Previously FilteredServiceDirectory was taking service names as char*
and then retaining that pointer to use it later. This didn't work
correctly when AddService() was called with name that's not stored in a
static buffer. Updated it to take StringPiece and then copy it to
std::string internally.

Change-Id: I382e3929eabb9806f4a74664ed355da886dcc61a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1935723Reviewed-by: default avatarWez <wez@chromium.org>
Commit-Queue: Wez <wez@chromium.org>
Auto-Submit: Sergey Ulanov <sergeyu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#719417}
parent ccbe8ed1
......@@ -20,15 +20,15 @@ FilteredServiceDirectory::FilteredServiceDirectory(
FilteredServiceDirectory::~FilteredServiceDirectory() {}
void FilteredServiceDirectory::AddService(const char* service_name) {
void FilteredServiceDirectory::AddService(base::StringPiece service_name) {
outgoing_directory_.AddPublicService(
std::make_unique<vfs::Service>(
[this, service_name](zx::channel channel,
async_dispatcher_t* dispatcher) {
[this, service_name = service_name.as_string()](
zx::channel channel, async_dispatcher_t* dispatcher) {
DCHECK_EQ(dispatcher, async_get_default_dispatcher());
directory_->Connect(service_name, std::move(channel));
}),
service_name);
service_name.as_string());
}
void FilteredServiceDirectory::ConnectClient(
......
......@@ -14,6 +14,7 @@
#include "base/base_export.h"
#include "base/macros.h"
#include "base/strings/string_piece.h"
namespace base {
namespace fuchsia {
......@@ -28,7 +29,7 @@ class BASE_EXPORT FilteredServiceDirectory {
~FilteredServiceDirectory();
// Adds the specified service to the list of whitelisted services.
void AddService(const char* service_name);
void AddService(base::StringPiece service_name);
// Connects a directory client. The directory can be passed to a sandboxed
// process to be used for /svc namespace.
......
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