| Index: o3d/gpu_plugin/command_buffer.cc
 | 
| ===================================================================
 | 
| --- o3d/gpu_plugin/command_buffer.cc	(revision 26879)
 | 
| +++ o3d/gpu_plugin/command_buffer.cc	(working copy)
 | 
| @@ -13,7 +13,8 @@
 | 
|        get_offset_(0),
 | 
|        put_offset_(0),
 | 
|        token_(0),
 | 
| -      error_(ERROR_NO_ERROR) {
 | 
| +      parse_error_(0),
 | 
| +      error_status_(false) {
 | 
|    // Element zero is always NULL.
 | 
|    registered_objects_.push_back(NPObjectPointer<NPObject>());
 | 
|  }
 | 
| @@ -22,6 +23,12 @@
 | 
|  }
 | 
|  
 | 
|  bool CommandBuffer::Initialize(int32 size) {
 | 
| +  // Check the size will not overflow when it is converted from count of int32s
 | 
| +  // to count of bytes.
 | 
| +  int32 num_bytes =  static_cast<int32>(size * sizeof(int32));
 | 
| +  if (num_bytes / sizeof(int32) != size)
 | 
| +    return false;
 | 
| +
 | 
|    if (shared_memory_.Get())
 | 
|      return false;
 | 
|  
 | 
| @@ -41,7 +48,7 @@
 | 
|    }
 | 
|  
 | 
|    NPObjectPointer<NPObject> result;
 | 
| -  if (!NPInvoke(npp_, system, "createSharedMemory", size,
 | 
| +  if (!NPInvoke(npp_, system, "createSharedMemory", num_bytes,
 | 
|                  &result)) {
 | 
|      return false;
 | 
|    }
 | 
| @@ -148,15 +155,18 @@
 | 
|  }
 | 
|  
 | 
|  NPObjectPointer<NPObject> CommandBuffer::GetRegisteredObject(int32 handle) {
 | 
| -  DCHECK_GE(handle, 0);
 | 
| -  DCHECK_LT(static_cast<size_t>(handle), registered_objects_.size());
 | 
| +  if (handle < 0)
 | 
| +    return NPObjectPointer<NPObject>();
 | 
|  
 | 
| +  if (static_cast<size_t>(handle) >= registered_objects_.size())
 | 
| +    return NPObjectPointer<NPObject>();
 | 
| +
 | 
|    return registered_objects_[handle];
 | 
|  }
 | 
|  
 | 
| -int32 CommandBuffer::ResetError() {
 | 
| -  int32 last_error = error_;
 | 
| -  error_ = ERROR_NO_ERROR;
 | 
| +int32 CommandBuffer::ResetParseError() {
 | 
| +  int32 last_error = parse_error_;
 | 
| +  parse_error_ = 0;
 | 
|    return last_error;
 | 
|  }
 | 
|  
 | 
| 
 |