| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "mojo/system/message_in_transit.h" | 5 #include "mojo/system/message_in_transit.h" |
| 6 | 6 |
| 7 #include <string.h> | 7 #include <string.h> |
| 8 | 8 |
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 MessageInTransit::View::View(size_t message_size, const void* buffer) | 51 MessageInTransit::View::View(size_t message_size, const void* buffer) |
| 52 : buffer_(buffer) { | 52 : buffer_(buffer) { |
| 53 size_t next_message_size = 0; | 53 size_t next_message_size = 0; |
| 54 DCHECK(MessageInTransit::GetNextMessageSize(buffer_, message_size, | 54 DCHECK(MessageInTransit::GetNextMessageSize(buffer_, message_size, |
| 55 &next_message_size)); | 55 &next_message_size)); |
| 56 DCHECK_EQ(message_size, next_message_size); | 56 DCHECK_EQ(message_size, next_message_size); |
| 57 // This should be equivalent. | 57 // This should be equivalent. |
| 58 DCHECK_EQ(message_size, total_size()); | 58 DCHECK_EQ(message_size, total_size()); |
| 59 } | 59 } |
| 60 | 60 |
| 61 bool MessageInTransit::View::IsValid(const char** error_message) const { | 61 bool MessageInTransit::View::IsValid(size_t serialized_platform_handle_size, |
| 62 const char** error_message) const { |
| 62 // Note: This also implies a check on the |main_buffer_size()|, which is just | 63 // Note: This also implies a check on the |main_buffer_size()|, which is just |
| 63 // |RoundUpMessageAlignment(sizeof(Header) + num_bytes())|. | 64 // |RoundUpMessageAlignment(sizeof(Header) + num_bytes())|. |
| 64 if (num_bytes() > kMaxMessageNumBytes) { | 65 if (num_bytes() > kMaxMessageNumBytes) { |
| 65 *error_message = "Message data payload too large"; | 66 *error_message = "Message data payload too large"; |
| 66 return false; | 67 return false; |
| 67 } | 68 } |
| 68 | 69 |
| 69 if (transport_data_buffer_size() > 0) { | 70 if (transport_data_buffer_size() > 0) { |
| 70 const char* e = TransportData::ValidateBuffer(transport_data_buffer(), | 71 const char* e = |
| 71 transport_data_buffer_size()); | 72 TransportData::ValidateBuffer(serialized_platform_handle_size, |
| 73 transport_data_buffer(), |
| 74 transport_data_buffer_size()); |
| 72 if (e) { | 75 if (e) { |
| 73 *error_message = e; | 76 *error_message = e; |
| 74 return false; | 77 return false; |
| 75 } | 78 } |
| 76 } | 79 } |
| 77 | 80 |
| 78 return true; | 81 return true; |
| 79 } | 82 } |
| 80 | 83 |
| 81 MessageInTransit::MessageInTransit(Type type, | 84 MessageInTransit::MessageInTransit(Type type, |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 DCHECK_EQ(main_buffer_size_ % kMessageAlignment, 0u); | 183 DCHECK_EQ(main_buffer_size_ % kMessageAlignment, 0u); |
| 181 header()->total_size = static_cast<uint32_t>(main_buffer_size_); | 184 header()->total_size = static_cast<uint32_t>(main_buffer_size_); |
| 182 if (transport_data_) { | 185 if (transport_data_) { |
| 183 header()->total_size += | 186 header()->total_size += |
| 184 static_cast<uint32_t>(transport_data_->buffer_size()); | 187 static_cast<uint32_t>(transport_data_->buffer_size()); |
| 185 } | 188 } |
| 186 } | 189 } |
| 187 | 190 |
| 188 } // namespace system | 191 } // namespace system |
| 189 } // namespace mojo | 192 } // namespace mojo |
| OLD | NEW |