diff options
author | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-13 23:11:51 +0000 |
---|---|---|
committer | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-13 23:11:51 +0000 |
commit | e6feb6594673a06049015728bb28c2d8cb15886d (patch) | |
tree | b8b01248e66e9a61e78255928610a38510fa7737 /chromeos/dbus | |
parent | 812b1138e147971ead2f60a9a52ee09962069d41 (diff) | |
download | chromium_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.cc | 19 | ||||
-rw-r--r-- | chromeos/dbus/power_manager_client.cc | 19 |
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(); |