| Index: dbus/message.cc
|
| diff --git a/dbus/message.cc b/dbus/message.cc
|
| index fd7c07710c4e089143f0342d3f9abe958cabcc93..7a1db0581c8161d9d9558324f7629150009b6297 100644
|
| --- a/dbus/message.cc
|
| +++ b/dbus/message.cc
|
| @@ -18,9 +18,9 @@ namespace {
|
|
|
| // Appends the header name and the value to |output|, if the value is
|
| // not empty.
|
| -static void AppendStringHeader(const std::string& header_name,
|
| - const std::string& header_value,
|
| - std::string* output) {
|
| +void AppendStringHeader(const std::string& header_name,
|
| + const std::string& header_value,
|
| + std::string* output) {
|
| if (!header_value.empty()) {
|
| *output += header_name + ": " + header_value + "\n";
|
| }
|
| @@ -28,15 +28,24 @@ static void AppendStringHeader(const std::string& header_name,
|
|
|
| // Appends the header name and the value to |output|, if the value is
|
| // nonzero.
|
| -static void AppendUint32Header(const std::string& header_name,
|
| - uint32 header_value,
|
| - std::string* output) {
|
| +void AppendUint32Header(const std::string& header_name,
|
| + uint32 header_value,
|
| + std::string* output) {
|
| if (header_value != 0) {
|
| *output += (header_name + ": " + base::StringPrintf("%u", header_value) +
|
| "\n");
|
| }
|
| }
|
|
|
| +// Returns true if Unix FD passing is supported in libdbus.
|
| +// The check is done runtime rather than compile time as the libdbus
|
| +// version used at runtime may be different from the one used at compile time.
|
| +bool IsDBusTypeUnixFdSupported() {
|
| + int major = 0, minor = 0, micro = 0;
|
| + dbus_get_version(&major, &minor, µ);
|
| + return major >= 1 && minor >= 4;
|
| +}
|
| +
|
| } // namespace
|
|
|
| namespace dbus {
|
| @@ -211,7 +220,7 @@ std::string Message::ToStringInternal(const std::string& indent,
|
| break;
|
| }
|
| case UNIX_FD: {
|
| - CHECK(kDBusTypeUnixFdIsSupported);
|
| + CHECK(IsDBusTypeUnixFdSupported());
|
|
|
| FileDescriptor file_descriptor;
|
| if (!reader->PopFileDescriptor(&file_descriptor))
|
| @@ -690,7 +699,7 @@ void MessageWriter::AppendVariantOfBasic(int dbus_type, const void* value) {
|
| }
|
|
|
| void MessageWriter::AppendFileDescriptor(const FileDescriptor& value) {
|
| - CHECK(kDBusTypeUnixFdIsSupported);
|
| + CHECK(IsDBusTypeUnixFdSupported());
|
|
|
| if (!value.is_valid()) {
|
| // NB: sending a directory potentially enables sandbox escape
|
| @@ -960,7 +969,7 @@ bool MessageReader::PopVariantOfBasic(int dbus_type, void* value) {
|
| }
|
|
|
| bool MessageReader::PopFileDescriptor(FileDescriptor* value) {
|
| - CHECK(kDBusTypeUnixFdIsSupported);
|
| + CHECK(IsDBusTypeUnixFdSupported());
|
|
|
| int fd = -1;
|
| const bool success = PopBasic(DBUS_TYPE_UNIX_FD, &fd);
|
|
|