Merge from Widevine repo of http://go/wvgerrit/93404 This is the unit tests, reference code, and documentation for OEMCrypto v16.2. Backwards compatibility should work for a v15 OEMCrypto. Some review comments will be addressed in future CLs. Bug: 141247171 Test: Unit tests Test: Media GTS tests on bonito Change-Id: I9d427c07580e180c0a4cfdc4a68f538d351c0ddd
35 lines
926 B
C
35 lines
926 B
C
/* Copyright 2019 Google LLC. All rights reserved. This file and proprietary */
|
|
/* source code may only be used and distributed under the Widevine Master */
|
|
/* License Agreement. */
|
|
|
|
#ifndef WIDEVINE_ODK_SRC_ODK_OVERFLOW_H_
|
|
#define WIDEVINE_ODK_SRC_ODK_OVERFLOW_H_
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef __has_builtin
|
|
# define __has_builtin(x) 0
|
|
#endif
|
|
|
|
#if (defined(__GNUC__) && __GNUC__ >= 5) || \
|
|
__has_builtin(__builtin_add_overflow)
|
|
# define odk_sub_overflow_u64 __builtin_sub_overflow
|
|
# define odk_add_overflow_u64 __builtin_add_overflow
|
|
# define odk_add_overflow_ux __builtin_add_overflow
|
|
#else
|
|
int odk_sub_overflow_u64(uint64_t a, uint64_t b, uint64_t* c);
|
|
int odk_add_overflow_u64(uint64_t a, uint64_t b, uint64_t* c);
|
|
int odk_add_overflow_ux(size_t a, size_t b, size_t* c);
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* WIDEVINE_ODK_SRC_ODK_OVERFLOW_H_ */
|