For context, see cl/578224540
This CL is produced via
- Do the removal
- `$ /google/src/head/depot/google3/devtools/scripts/csearch_apply --includefile 'video/widevine/export/common/oemcrypto_core_message/' --search='Copyright \d{4} Google LLC. All rights reserved.' --apply='s,\ All rights reserved\.,,g'`
- Manually deleted a few periods. I.e., for cases where the comment is ONLY "Copyright <year> Google LLC.", I removed the period at the end.
PiperOrigin-RevId: 580020267
Change-Id: I4b2f647d6e3bbb34868e1822591bc953a94cca42
49 lines
836 B
C
49 lines
836 B
C
// Copyright 2019 Google LLC. This file and proprietary
|
|
// source code may only be used and distributed under the Widevine
|
|
// License Agreement.
|
|
|
|
#include "odk_overflow.h"
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
int odk_sub_overflow_u64(uint64_t a, uint64_t b, uint64_t* c) {
|
|
if (a >= b) {
|
|
if (c) {
|
|
*c = a - b;
|
|
}
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
int odk_add_overflow_u64(uint64_t a, uint64_t b, uint64_t* c) {
|
|
if (UINT64_MAX - a >= b) {
|
|
if (c) {
|
|
*c = a + b;
|
|
}
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
int odk_add_overflow_ux(size_t a, size_t b, size_t* c) {
|
|
if (SIZE_MAX - a >= b) {
|
|
if (c) {
|
|
*c = a + b;
|
|
}
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
int odk_mul_overflow_ux(size_t a, size_t b, size_t* c) {
|
|
if (b > 0 && a > SIZE_MAX / b) {
|
|
return 1;
|
|
}
|
|
if (c) {
|
|
*c = a * b;
|
|
}
|
|
return 0;
|
|
}
|