| 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 89c8d554132ba75d7ef070d2a498d04439376034..d056e7dbc8331962cc56c50b630db5125f632b7d 100644
|
| --- a/mojo/edk/system/data_pipe_producer_dispatcher.cc
|
| +++ b/mojo/edk/system/data_pipe_producer_dispatcher.cc
|
| @@ -509,10 +509,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.";
|
|
|