| Index: mojo/edk/system/data_pipe_producer_dispatcher.cc
|
| diff --git a/mojo/edk/system/data_pipe_producer_dispatcher.cc b/mojo/edk/system/data_pipe_producer_dispatcher.cc
|
| index d3b2530035889b2a5446edd1f33596d096dc6563..364b898e236e07cd99dd077a7c639074c0f06921 100644
|
| --- a/mojo/edk/system/data_pipe_producer_dispatcher.cc
|
| +++ b/mojo/edk/system/data_pipe_producer_dispatcher.cc
|
| @@ -513,10 +513,14 @@ void DataPipeProducerDispatcher::UpdateSignalsStateNoLock() {
|
| if (rv != ports::OK)
|
| peer_closed_ = true;
|
| if (message) {
|
| - PortsMessage* ports_message = static_cast<PortsMessage*>(message.get());
|
| + if (message->num_payload_bytes() < sizeof(DataPipeControlMessage)) {
|
| + peer_closed_ = true;
|
| + break;
|
| + }
|
| +
|
| const DataPipeControlMessage* m =
|
| static_cast<const DataPipeControlMessage*>(
|
| - ports_message->payload_bytes());
|
| + message->payload_bytes());
|
|
|
| if (m->command != DataPipeCommand::DATA_WAS_READ) {
|
| DLOG(ERROR) << "Unexpected message from consumer.";
|
|
|