Chromium Code Reviews| Index: base/pickle.cc |
| =================================================================== |
| --- base/pickle.cc (revision 178847) |
| +++ base/pickle.cc (working copy) |
| @@ -35,12 +35,14 @@ |
| template<typename Type> |
| inline const char* PickleIterator::GetReadPointerAndAdvance() { |
| const char* current_read_ptr = read_ptr_; |
| - if (read_ptr_ + sizeof(Type) > read_end_ptr_) |
| - return NULL; |
| + size_t s; |
|
jar (doing other things)
2013/03/04 19:25:51
nit: style guide suggests avoiding single characte
|
| if (sizeof(Type) < sizeof(uint32)) |
| - read_ptr_ += AlignInt(sizeof(Type), sizeof(uint32)); |
| + s = AlignInt(sizeof(Type), sizeof(uint32)); |
|
jar (doing other things)
2013/03/04 19:25:51
Am I correct in reading AlignInt(smaller, larger)
|
| else |
| - read_ptr_ += sizeof(Type); |
| + s = sizeof(Type); |
| + if (s > static_cast<size_t>(read_end_ptr_ - read_ptr_)) |
| + return NULL; |
| + read_ptr_ += s; |
| return current_read_ptr; |
| } |
| @@ -353,9 +355,8 @@ |
| const Header* hdr = reinterpret_cast<const Header*>(start); |
| const char* payload_base = start + header_size; |
| - const char* payload_end = payload_base + hdr->payload_size; |
| - if (payload_end < payload_base) |
| + if (hdr->payload_size > static_cast<size_t>(end - payload_base)) |
| return NULL; |
| - return (payload_end > end) ? NULL : payload_end; |
| + return payload_base + hdr->payload_size; |
| } |