Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Side by Side Diff: mojo/edk/system/message_in_transit.cc

Issue 724493002: Re-run clang-format on mojo/edk/{embedder,system,test}. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/edk/system/memory.cc ('k') | mojo/edk/system/message_pipe.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/edk/system/message_in_transit.h" 5 #include "mojo/edk/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 25 matching lines...) Expand all
36 36
37 struct MessageInTransit::PrivateStructForCompileAsserts { 37 struct MessageInTransit::PrivateStructForCompileAsserts {
38 // The size of |Header| must be a multiple of the alignment. 38 // The size of |Header| must be a multiple of the alignment.
39 static_assert(sizeof(Header) % kMessageAlignment == 0, 39 static_assert(sizeof(Header) % kMessageAlignment == 0,
40 "sizeof(MessageInTransit::Header) invalid"); 40 "sizeof(MessageInTransit::Header) invalid");
41 }; 41 };
42 42
43 MessageInTransit::View::View(size_t message_size, const void* buffer) 43 MessageInTransit::View::View(size_t message_size, const void* buffer)
44 : buffer_(buffer) { 44 : buffer_(buffer) {
45 size_t next_message_size = 0; 45 size_t next_message_size = 0;
46 DCHECK(MessageInTransit::GetNextMessageSize( 46 DCHECK(MessageInTransit::GetNextMessageSize(buffer_, message_size,
47 buffer_, message_size, &next_message_size)); 47 &next_message_size));
48 DCHECK_EQ(message_size, next_message_size); 48 DCHECK_EQ(message_size, next_message_size);
49 // This should be equivalent. 49 // This should be equivalent.
50 DCHECK_EQ(message_size, total_size()); 50 DCHECK_EQ(message_size, total_size());
51 } 51 }
52 52
53 bool MessageInTransit::View::IsValid(size_t serialized_platform_handle_size, 53 bool MessageInTransit::View::IsValid(size_t serialized_platform_handle_size,
54 const char** error_message) const { 54 const char** error_message) const {
55 size_t max_message_num_bytes = GetConfiguration().max_message_num_bytes; 55 size_t max_message_num_bytes = GetConfiguration().max_message_num_bytes;
56 // Avoid dangerous situations, but making sure that the size of the "header" + 56 // Avoid dangerous situations, but making sure that the size of the "header" +
57 // the size of the data fits into a 31-bit number. 57 // the size of the data fits into a 31-bit number.
58 DCHECK_LE(static_cast<uint64_t>(sizeof(Header)) + max_message_num_bytes, 58 DCHECK_LE(static_cast<uint64_t>(sizeof(Header)) + max_message_num_bytes,
59 0x7fffffffULL) 59 0x7fffffffULL)
60 << "GetConfiguration().max_message_num_bytes too big"; 60 << "GetConfiguration().max_message_num_bytes too big";
61 61
62 // We assume (to avoid extra rounding code) that the maximum message (data) 62 // We assume (to avoid extra rounding code) that the maximum message (data)
63 // size is a multiple of the alignment. 63 // size is a multiple of the alignment.
64 DCHECK_EQ(max_message_num_bytes % kMessageAlignment, 0U) 64 DCHECK_EQ(max_message_num_bytes % kMessageAlignment, 0U)
65 << "GetConfiguration().max_message_num_bytes not a multiple of alignment"; 65 << "GetConfiguration().max_message_num_bytes not a multiple of alignment";
66 66
67 // Note: This also implies a check on the |main_buffer_size()|, which is just 67 // Note: This also implies a check on the |main_buffer_size()|, which is just
68 // |RoundUpMessageAlignment(sizeof(Header) + num_bytes())|. 68 // |RoundUpMessageAlignment(sizeof(Header) + num_bytes())|.
69 if (num_bytes() > max_message_num_bytes) { 69 if (num_bytes() > max_message_num_bytes) {
70 *error_message = "Message data payload too large"; 70 *error_message = "Message data payload too large";
71 return false; 71 return false;
72 } 72 }
73 73
74 if (transport_data_buffer_size() > 0) { 74 if (transport_data_buffer_size() > 0) {
75 const char* e = 75 const char* e = TransportData::ValidateBuffer(
76 TransportData::ValidateBuffer(serialized_platform_handle_size, 76 serialized_platform_handle_size, transport_data_buffer(),
77 transport_data_buffer(), 77 transport_data_buffer_size());
78 transport_data_buffer_size());
79 if (e) { 78 if (e) {
80 *error_message = e; 79 *error_message = e;
81 return false; 80 return false;
82 } 81 }
83 } 82 }
84 83
85 return true; 84 return true;
86 } 85 }
87 86
88 MessageInTransit::MessageInTransit(Type type, 87 MessageInTransit::MessageInTransit(Type type,
89 Subtype subtype, 88 Subtype subtype,
90 uint32_t num_bytes, 89 uint32_t num_bytes,
91 const void* bytes) 90 const void* bytes)
92 : main_buffer_size_(RoundUpMessageAlignment(sizeof(Header) + num_bytes)), 91 : main_buffer_size_(RoundUpMessageAlignment(sizeof(Header) + num_bytes)),
93 main_buffer_(static_cast<char*>( 92 main_buffer_(static_cast<char*>(
94 base::AlignedAlloc(main_buffer_size_, kMessageAlignment))) { 93 base::AlignedAlloc(main_buffer_size_, kMessageAlignment))) {
95 ConstructorHelper(type, subtype, num_bytes); 94 ConstructorHelper(type, subtype, num_bytes);
96 if (bytes) { 95 if (bytes) {
97 memcpy(MessageInTransit::bytes(), bytes, num_bytes); 96 memcpy(MessageInTransit::bytes(), bytes, num_bytes);
98 memset(static_cast<char*>(MessageInTransit::bytes()) + num_bytes, 97 memset(static_cast<char*>(MessageInTransit::bytes()) + num_bytes, 0,
99 0,
100 main_buffer_size_ - sizeof(Header) - num_bytes); 98 main_buffer_size_ - sizeof(Header) - num_bytes);
101 } else { 99 } else {
102 memset(MessageInTransit::bytes(), 0, main_buffer_size_ - sizeof(Header)); 100 memset(MessageInTransit::bytes(), 0, main_buffer_size_ - sizeof(Header));
103 } 101 }
104 } 102 }
105 103
106 MessageInTransit::MessageInTransit(Type type, 104 MessageInTransit::MessageInTransit(Type type,
107 Subtype subtype, 105 Subtype subtype,
108 uint32_t num_bytes, 106 uint32_t num_bytes,
109 UserPointer<const void> bytes) 107 UserPointer<const void> bytes)
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 DCHECK_EQ(main_buffer_size_ % kMessageAlignment, 0u); 213 DCHECK_EQ(main_buffer_size_ % kMessageAlignment, 0u);
216 header()->total_size = static_cast<uint32_t>(main_buffer_size_); 214 header()->total_size = static_cast<uint32_t>(main_buffer_size_);
217 if (transport_data_) { 215 if (transport_data_) {
218 header()->total_size += 216 header()->total_size +=
219 static_cast<uint32_t>(transport_data_->buffer_size()); 217 static_cast<uint32_t>(transport_data_->buffer_size());
220 } 218 }
221 } 219 }
222 220
223 } // namespace system 221 } // namespace system
224 } // namespace mojo 222 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/edk/system/memory.cc ('k') | mojo/edk/system/message_pipe.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698