summaryrefslogtreecommitdiffstats
path: root/chromeos/dbus
diff options
context:
space:
mode:
authorkmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-13 23:11:51 +0000
committerkmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-13 23:11:51 +0000
commite6feb6594673a06049015728bb28c2d8cb15886d (patch)
treeb8b01248e66e9a61e78255928610a38510fa7737 /chromeos/dbus
parent812b1138e147971ead2f60a9a52ee09962069d41 (diff)
downloadchromium_src-e6feb6594673a06049015728bb28c2d8cb15886d.zip
chromium_src-e6feb6594673a06049015728bb28c2d8cb15886d.tar.gz
chromium_src-e6feb6594673a06049015728bb28c2d8cb15886d.tar.bz2
Modified MediaTransferProtocolDaemonClient response handlers to handle PopArrayOfBytesAsProto failures gracefully.
Also added checks in power_manager_client.cc. BUG=144527 TEST=none Review URL: https://chromiumcodereview.appspot.com/10911286 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@156666 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos/dbus')
-rw-r--r--chromeos/dbus/media_transfer_protocol_daemon_client.cc19
-rw-r--r--chromeos/dbus/power_manager_client.cc19
2 files changed, 32 insertions, 6 deletions
diff --git a/chromeos/dbus/media_transfer_protocol_daemon_client.cc b/chromeos/dbus/media_transfer_protocol_daemon_client.cc
index 9ed81a0..1d8e1e3 100644
--- a/chromeos/dbus/media_transfer_protocol_daemon_client.cc
+++ b/chromeos/dbus/media_transfer_protocol_daemon_client.cc
@@ -257,7 +257,11 @@ class MediaTransferProtocolDaemonClientImpl
dbus::MessageReader reader(response);
MtpStorageInfo protobuf;
- reader.PopArrayOfBytesAsProto(&protobuf);
+ if (!reader.PopArrayOfBytesAsProto(&protobuf)) {
+ LOG(ERROR) << "Invalid response: " << response->ToString();
+ error_callback.Run();
+ return;
+ }
callback.Run(protobuf);
}
@@ -304,7 +308,12 @@ class MediaTransferProtocolDaemonClientImpl
std::vector<MtpFileEntry> file_entries;
dbus::MessageReader reader(response);
MtpFileEntries entries_protobuf;
- reader.PopArrayOfBytesAsProto(&entries_protobuf);
+ if (!reader.PopArrayOfBytesAsProto(&entries_protobuf)) {
+ LOG(ERROR) << "Invalid response: " << response->ToString();
+ error_callback.Run();
+ return;
+ }
+
for (int i = 0; i < entries_protobuf.file_entries_size(); ++i)
file_entries.push_back(entries_protobuf.file_entries(i));
callback.Run(file_entries);
@@ -343,7 +352,11 @@ class MediaTransferProtocolDaemonClientImpl
dbus::MessageReader reader(response);
MtpFileEntry protobuf;
- reader.PopArrayOfBytesAsProto(&protobuf);
+ if (!reader.PopArrayOfBytesAsProto(&protobuf)) {
+ LOG(ERROR) << "Invalid response: " << response->ToString();
+ error_callback.Run();
+ return;
+ }
callback.Run(protobuf);
}
diff --git a/chromeos/dbus/power_manager_client.cc b/chromeos/dbus/power_manager_client.cc
index 766a77a..1b3c240 100644
--- a/chromeos/dbus/power_manager_client.cc
+++ b/chromeos/dbus/power_manager_client.cc
@@ -237,7 +237,11 @@ class PowerManagerClientImpl : public PowerManagerClient {
protobuf.set_last_activity_time(last_activity_time.ToInternalValue());
protobuf.set_is_fullscreen(is_fullscreen);
- writer.AppendProtoAsArrayOfBytes(protobuf);
+ if (!writer.AppendProtoAsArrayOfBytes(protobuf)) {
+ LOG(ERROR) << "Error calling "
+ << power_manager::kHandleVideoActivityMethod;
+ return;
+ }
power_manager_proxy_->CallMethod(
&method_call,
dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
@@ -261,7 +265,11 @@ class PowerManagerClientImpl : public PowerManagerClient {
protobuf.set_disable_idle_suspend(overrides & DISABLE_IDLE_SUSPEND);
protobuf.set_disable_lid_suspend(overrides & DISABLE_IDLE_LID_SUSPEND);
- writer.AppendProtoAsArrayOfBytes(protobuf);
+ if (!writer.AppendProtoAsArrayOfBytes(protobuf)) {
+ LOG(ERROR) << "Error calling "
+ << power_manager::kStateOverrideRequest;
+ return;
+ }
power_manager_proxy_->CallMethod(
&method_call,
dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
@@ -383,7 +391,12 @@ class PowerManagerClientImpl : public PowerManagerClient {
dbus::MessageReader reader(response);
PowerSupplyProperties protobuf;
- reader.PopArrayOfBytesAsProto(&protobuf);
+ if (!reader.PopArrayOfBytesAsProto(&protobuf)) {
+ LOG(ERROR) << "Error calling "
+ << power_manager::kGetPowerSupplyPropertiesMethod
+ << response->ToString();
+ return;
+ }
PowerSupplyStatus status;
status.line_power_on = protobuf.line_power_on();