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