| 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
 | 
| 
 |