| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "base/pickle.h" | 5 #include "base/pickle.h" |
| 6 | 6 |
| 7 #include <stdlib.h> | 7 #include <stdlib.h> |
| 8 | 8 |
| 9 #include <algorithm> // for max() | 9 #include <algorithm> // for max() |
| 10 #include <limits> | 10 #include <limits> |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 | 150 |
| 151 // TODO(jar): http://crbug.com/13108 Pickle should be cleaned up, and not | 151 // TODO(jar): http://crbug.com/13108 Pickle should be cleaned up, and not |
| 152 // dependent on alignment. | 152 // dependent on alignment. |
| 153 // Next line is otherwise the same as: memcpy(result, *iter, sizeof(*result)); | 153 // Next line is otherwise the same as: memcpy(result, *iter, sizeof(*result)); |
| 154 *result = *reinterpret_cast<size_t*>(*iter); | 154 *result = *reinterpret_cast<size_t*>(*iter); |
| 155 | 155 |
| 156 UpdateIter(iter, sizeof(*result)); | 156 UpdateIter(iter, sizeof(*result)); |
| 157 return true; | 157 return true; |
| 158 } | 158 } |
| 159 | 159 |
| 160 bool Pickle::ReadUInt16(void** iter, uint16* result) const { |
| 161 DCHECK(iter); |
| 162 if (!*iter) |
| 163 *iter = const_cast<char*>(payload()); |
| 164 |
| 165 if (!IteratorHasRoomFor(*iter, sizeof(*result))) |
| 166 return false; |
| 167 |
| 168 memcpy(result, *iter, sizeof(*result)); |
| 169 |
| 170 UpdateIter(iter, sizeof(*result)); |
| 171 return true; |
| 172 } |
| 173 |
| 160 bool Pickle::ReadUInt32(void** iter, uint32* result) const { | 174 bool Pickle::ReadUInt32(void** iter, uint32* result) const { |
| 161 DCHECK(iter); | 175 DCHECK(iter); |
| 162 if (!*iter) | 176 if (!*iter) |
| 163 *iter = const_cast<char*>(payload()); | 177 *iter = const_cast<char*>(payload()); |
| 164 | 178 |
| 165 if (!IteratorHasRoomFor(*iter, sizeof(*result))) | 179 if (!IteratorHasRoomFor(*iter, sizeof(*result))) |
| 166 return false; | 180 return false; |
| 167 | 181 |
| 168 memcpy(result, *iter, sizeof(*result)); | 182 memcpy(result, *iter, sizeof(*result)); |
| 169 | 183 |
| (...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 410 return NULL; | 424 return NULL; |
| 411 | 425 |
| 412 const Header* hdr = reinterpret_cast<const Header*>(start); | 426 const Header* hdr = reinterpret_cast<const Header*>(start); |
| 413 const char* payload_base = start + header_size; | 427 const char* payload_base = start + header_size; |
| 414 const char* payload_end = payload_base + hdr->payload_size; | 428 const char* payload_end = payload_base + hdr->payload_size; |
| 415 if (payload_end < payload_base) | 429 if (payload_end < payload_base) |
| 416 return NULL; | 430 return NULL; |
| 417 | 431 |
| 418 return (payload_end > end) ? NULL : payload_end; | 432 return (payload_end > end) ? NULL : payload_end; |
| 419 } | 433 } |
| OLD | NEW |