Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2888)

Unified Diff: dbus/message.cc

Issue 10815083: Make dbus file descriptor check dynamic (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: cleanup Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « dbus/message.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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, &micro);
+ 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);
« no previous file with comments | « dbus/message.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698