| Index: third_party/libwebp/utils/utils.c | 
| diff --git a/third_party/libwebp/utils/utils.c b/third_party/libwebp/utils/utils.c | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..673b7e284c3d0c8563dcfb315d6c4fccacf8754f | 
| --- /dev/null | 
| +++ b/third_party/libwebp/utils/utils.c | 
| @@ -0,0 +1,44 @@ | 
| +// Copyright 2012 Google Inc. All Rights Reserved. | 
| +// | 
| +// This code is licensed under the same terms as WebM: | 
| +//  Software License Agreement:  http://www.webmproject.org/license/software/ | 
| +//  Additional IP Rights Grant:  http://www.webmproject.org/license/additional/ | 
| +// ----------------------------------------------------------------------------- | 
| +// | 
| +// Misc. common utility functions | 
| +// | 
| +// Author: Skal (pascal.massimino@gmail.com) | 
| + | 
| +#include <stdlib.h> | 
| +#include "./utils.h" | 
| + | 
| +#if defined(__cplusplus) || defined(c_plusplus) | 
| +extern "C" { | 
| +#endif | 
| + | 
| +//------------------------------------------------------------------------------ | 
| +// Checked memory allocation | 
| + | 
| +static int CheckSizeArguments(uint64_t nmemb, size_t size) { | 
| +  const uint64_t total_size = nmemb * size; | 
| +  if (nmemb == 0) return 1; | 
| +  if ((uint64_t)size > WEBP_MAX_ALLOCABLE_MEMORY / nmemb) return 0; | 
| +  if (total_size != (size_t)total_size) return 0; | 
| +  return 1; | 
| +} | 
| + | 
| +void* WebPSafeMalloc(uint64_t nmemb, size_t size) { | 
| +  if (!CheckSizeArguments(nmemb, size)) return NULL; | 
| +  return malloc((size_t)(nmemb * size)); | 
| +} | 
| + | 
| +void* WebPSafeCalloc(uint64_t nmemb, size_t size) { | 
| +  if (!CheckSizeArguments(nmemb, size)) return NULL; | 
| +  return calloc((size_t)nmemb, size); | 
| +} | 
| + | 
| +//------------------------------------------------------------------------------ | 
| + | 
| +#if defined(__cplusplus) || defined(c_plusplus) | 
| +}    // extern "C" | 
| +#endif | 
|  |