This is a cherry pick of recent changes to OEMCrypto and ODK. Most of these are part of the document migration to doxygen. See http://go/wvgerrit/106005 and its parents for code reviews. Bug: 144715340 Bug: 148232693 Bug: 167580674 Change-Id: I658f99c8117b974faed97322d61fac0f382283af
37 lines
681 B
C
37 lines
681 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.
|
|
|
|
#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;
|
|
}
|