| Index: ui/gl/gl_surface_osmesa.cc
 | 
| diff --git a/ui/gl/gl_surface_osmesa.cc b/ui/gl/gl_surface_osmesa.cc
 | 
| index 4c491664e299e93d5b377cbe4ad9b195c3e760ad..7f1b1ad881d0bc1b6b2ce5a99a0bf6e80188ae89 100644
 | 
| --- a/ui/gl/gl_surface_osmesa.cc
 | 
| +++ b/ui/gl/gl_surface_osmesa.cc
 | 
| @@ -3,6 +3,7 @@
 | 
|  // found in the LICENSE file.
 | 
|  
 | 
|  #include "base/logging.h"
 | 
| +#include "base/numerics/safe_math.h"
 | 
|  #include "third_party/mesa/src/include/GL/osmesa.h"
 | 
|  #include "ui/gl/gl_bindings.h"
 | 
|  #include "ui/gl/gl_context.h"
 | 
| @@ -50,8 +51,17 @@ bool GLSurfaceOSMesa::Resize(const gfx::Size& new_size) {
 | 
|    // Preserve the old buffer.
 | 
|    scoped_ptr<int32[]> old_buffer(buffer_.release());
 | 
|  
 | 
| +  base::CheckedNumeric<int> checked_size = sizeof(buffer_[0]);
 | 
| +  checked_size *= new_size.width();
 | 
| +  checked_size *= new_size.height();
 | 
| +  if (!checked_size.IsValid())
 | 
| +    return false;
 | 
| +
 | 
|    // Allocate a new one.
 | 
|    buffer_.reset(new int32[new_size.GetArea()]);
 | 
| +  if (!buffer_.get())
 | 
| +    return false;
 | 
| +
 | 
|    memset(buffer_.get(), 0, new_size.GetArea() * sizeof(buffer_[0]));
 | 
|  
 | 
|    // Copy the old back buffer into the new buffer.
 | 
| 
 |