summaryrefslogtreecommitdiff
path: root/common/util.c
diff options
context:
space:
mode:
authorTom Hughes <tomhughes@chromium.org>2022-09-21 14:10:01 -0700
committerTom Hughes <tomhughes@chromium.org>2022-09-22 12:49:33 -0700
commit2bcf863b492fe7ed8105c853814dba6ed32ba719 (patch)
treefcf6ce5810f9ff9e3c8cce434812dd75492269ed /common/util.c
parente5fb0b9ba488614b5684e640530f00821ab7b943 (diff)
parent28712dae9d7ed1e694f7622cc083afa71090d4d5 (diff)
downloadchrome-ec-2bcf863b492fe7ed8105c853814dba6ed32ba719.tar.gz
Merge remote-tracking branch cros/main into firmware-fpmcu-bloonchipper-releasefirmware-fpmcu-bloonchipper-release
Generated by: ./util/update_release_branch.py --board bloonchipper --relevant_paths_file ./util/fingerprint-relevant-paths.txt firmware- fpmcu-bloonchipper-release Relevant changes: git log --oneline e5fb0b9ba4..28712dae9d -- board/hatch_fp board/bloonchipper common/fpsensor docs/fingerprint driver/fingerprint util/getversion.sh ded9307b79 util/getversion.sh: Fix version when not in a git repo 956055e692 board: change Google USB vendor info 71b2ef709d Update license boilerplate text in source code files 33e11afda0 Revert "fpsensor: Build fpsensor source file with C++" c8d0360723 fpsensor: Build fpsensor source file with C++ bc113abd53 fpsensor: Fix g++ compiler error 150a58a0dc fpsensor: Fix fp_set_sensor_mode return type b33b5ce85b fpsensor: Remove nested designators for C++ compatibility 2e864b2539 tree-wide: const-ify argv for console commands 56d8b360f9 test: Add test for get ikm failure when seed not set 3a3d6c3690 test: Add test for fpsensor trivial key failure 233e6bbd08 fpsensor_crypto: Abstract calls to hmac_SHA256 0a041b285b docs/fingerprint: Typo correction c03fab67e2 docs/fingerprint: Fix the path of fputils.py 0b5d4baf5a util/getversion.sh: Fix empty file list handling 6e128fe760 FPMCU dev board environment with Satlab 3eb29b6aa5 builtin: Move ssize_t to sys/types.h 345d62ebd1 docs/fingerprint: Update power numbers for latest dartmonkey release c25ffdb316 common: Conditionally support printf %l and %i modifiers 9a3c514b45 test: Add a test to check if the debugger is connected 54e603413f Move standard library tests to their own file 43fa6b4bf8 docs/fingerprint: Update power numbers for latest bloonchipper release 25536f9a84 driver/fingerprint/fpc/bep/fpc_sensor_spi.c: Format with clang-format 4face99efd driver/fingerprint/fpc/libfp/fpc_sensor_pal.h: Format with clang-format 738de2b575 trng: Rename rand to trng_rand 14b8270edd docs/fingerprint: Update dragonclaw power numbers 0b268f93d1 driver/fingerprint/fpc/libfp/fpc_private.c: Format with clang-format f80da163f2 driver/fingerprint/fpc/libfp/fpc_private.h: Format with clang-format 5e9c85c9b1 driver/fingerprint/fpc/libfp/fpc_sensor_pal.c: Format with clang-format c1f9dd3cf8 driver/fingerprint/fpc/libfp/fpc_bio_algorithm.h: Format with clang-format eb1e1bed8d driver/fingerprint/fpc/libfp/fpc1145_private.h: Format with clang-format 6e7b611821 driver/fingerprint/fpc/bep/fpc_bio_algorithm.h: Format with clang-format e0589cd5e2 driver/fingerprint/fpc/bep/fpc1035_private.h: Format with clang-format 7905e556a0 common/fpsensor/fpsensor_crypto.c: Format with clang-format 21289d170c driver/fingerprint/fpc/bep/fpc1025_private.h: Format with clang-format 98a20f937e common/fpsensor/fpsensor_state.c: Format with clang-format a2d255d8af common/fpsensor/fpsensor.c: Format with clang-format 73055eeb3f driver/fingerprint/fpc/bep/fpc_private.c: Format with clang-format 0f7b5cb509 common/fpsensor/fpsensor_private.h: Format with clang-format 1ceade6e65 driver/fingerprint/fpc/bep/fpc_private.h: Format with clang-format dc3e9008b8 board/hatch_fp/board.h: Format with clang-format dca9d74321 Revert "trng: Rename rand to trng_rand" a6b0b3554f trng: Rename rand to trng_rand 28d0b75b70 third_party/boringssl: Remove unused header BRANCH=None BUG=b:246424843 b:234181908 b:244781166 b:234181908 b:244387210 BUG=b:242720240 chromium:1098010 b:180945056 b:236025198 b:234181908 BUG=b:234181908 b:237344361 b:131913998 b:236386294 b:234143158 BUG=b:234781655 b:215613183 b:242720910 TEST=`make -j buildall` TEST=./test/run_device_tests.py --board bloonchipper Test "aes": PASSED Test "cec": PASSED Test "cortexm_fpu": PASSED Test "crc": PASSED Test "flash_physical": PASSED Test "flash_write_protect": PASSED Test "fpsensor_hw": PASSED Test "fpsensor_spi_ro": PASSED Test "fpsensor_spi_rw": PASSED Test "fpsensor_uart_ro": PASSED Test "fpsensor_uart_rw": PASSED Test "mpu_ro": PASSED Test "mpu_rw": PASSED Test "mutex": PASSED Test "pingpong": PASSED Test "printf": PASSED Test "queue": PASSED Test "rollback_region0": PASSED Test "rollback_region1": PASSED Test "rollback_entropy": PASSED Test "rtc": PASSED Test "sha256": PASSED Test "sha256_unrolled": PASSED Test "static_if": PASSED Test "stdlib": PASSED Test "system_is_locked_wp_on": PASSED Test "system_is_locked_wp_off": PASSED Test "timer_dos": PASSED Test "utils": PASSED Test "utils_str": PASSED Test "stm32f_rtc": PASSED Test "panic_data_bloonchipper_v2.0.4277": PASSED Test "panic_data_bloonchipper_v2.0.5938": PASSED Force-Relevant-Builds: all Signed-off-by: Tom Hughes <tomhughes@chromium.org> Change-Id: I264ad0ffe7afcd507a1e483c6e934a9c4fea47c3
Diffstat (limited to 'common/util.c')
-rw-r--r--common/util.c90
1 files changed, 20 insertions, 70 deletions
diff --git a/common/util.c b/common/util.c
index 7b33cc097e..7672dc1325 100644
--- a/common/util.c
+++ b/common/util.c
@@ -1,30 +1,19 @@
-/* Copyright 2013 The Chromium OS Authors. All rights reserved.
+/* Copyright 2013 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
/* Utility functions for Chrome EC */
+#include "builtin/assert.h"
#include "common.h"
#include "console.h"
#include "util.h"
-__stdlib_compat int strcasecmp(const char *s1, const char *s2)
+int find_base(int base, int *c, const char **nptr)
{
- int diff;
-
- do {
- diff = tolower(*s1) - tolower(*s2);
- if (diff)
- return diff;
- } while (*(s1++) && *(s2++));
- return 0;
-}
-
-static int find_base(int base, int *c, const char **nptr)
-{
- if ((base == 0 || base == 16) && *c == '0'
- && (**nptr == 'x' || **nptr == 'X')) {
+ if ((base == 0 || base == 16) && *c == '0' &&
+ (**nptr == 'x' || **nptr == 'X')) {
*c = (*nptr)[1];
(*nptr) += 2;
base = 16;
@@ -35,7 +24,7 @@ static int find_base(int base, int *c, const char **nptr)
}
/* Like strtol(), but for integers */
-__stdlib_compat int strtoi(const char *nptr, char **endptr, int base)
+int strtoi(const char *nptr, char **endptr, int base)
{
int result = 0;
int neg = 0;
@@ -71,58 +60,20 @@ __stdlib_compat int strtoi(const char *nptr, char **endptr, int base)
return neg ? -result : result;
}
-#ifndef CONFIG_ZEPHYR
-__stdlib_compat unsigned long long int strtoull(const char *nptr, char **endptr,
- int base)
-{
- uint64_t result = 0;
- int c = '\0';
-
- while ((c = *nptr++) && isspace(c))
- ;
-
- if (c == '+') {
- c = *nptr++;
- } else if (c == '-') {
- if (endptr)
- *endptr = (char *)nptr - 1;
- return result;
- }
-
- base = find_base(base, &c, &nptr);
-
- while (c) {
- if (c >= '0' && c < '0' + MIN(base, 10))
- result = result * base + (c - '0');
- else if (c >= 'A' && c < 'A' + base - 10)
- result = result * base + (c - 'A' + 10);
- else if (c >= 'a' && c < 'a' + base - 10)
- result = result * base + (c - 'a' + 10);
- else
- break;
-
- c = *nptr++;
- }
-
- if (endptr)
- *endptr = (char *)nptr - 1;
- return result;
-}
-#endif /* !CONFIG_ZEPHYR */
-BUILD_ASSERT(sizeof(unsigned long long int) == sizeof(uint64_t));
-
-__stdlib_compat int parse_bool(const char *s, int *dest)
+int parse_bool(const char *s, int *dest)
{
/* off, disable, false, no */
if (!strcasecmp(s, "off") || !strncasecmp(s, "dis", 3) ||
- tolower(*s) == 'f' || tolower(*s) == 'n') {
+ tolower((unsigned char)*s) == 'f' ||
+ tolower((unsigned char)*s) == 'n') {
*dest = 0;
return 1;
}
/* on, enable, true, yes */
if (!strcasecmp(s, "on") || !strncasecmp(s, "ena", 3) ||
- tolower(*s) == 't' || tolower(*s) == 'y') {
+ tolower((unsigned char)*s) == 't' ||
+ tolower((unsigned char)*s) == 'y') {
*dest = 1;
return 1;
}
@@ -131,7 +82,6 @@ __stdlib_compat int parse_bool(const char *s, int *dest)
return 0;
}
-
/* Constant-time memory comparison */
int safe_memcmp(const void *s1, const void *s2, size_t size)
{
@@ -166,7 +116,7 @@ void reverse(void *dest, size_t len)
}
}
-__stdlib_compat char *strzcpy(char *dest, const char *src, int len)
+char *strzcpy(char *dest, const char *src, int len)
{
char *d = dest;
if (len <= 0)
@@ -253,7 +203,7 @@ bool is_aligned(uint32_t addr, uint32_t align)
int alignment_log2(unsigned int x)
{
- ASSERT(x != 0); /* ctz(0) is undefined */
+ ASSERT(x != 0); /* ctz(0) is undefined */
return __builtin_ctz(x);
}
@@ -261,9 +211,9 @@ int alignment_log2(unsigned int x)
/* stateful conditional stuff */
enum cond_internal_bits {
- COND_CURR_MASK = BIT(0), /* current value */
- COND_RISE_MASK = BIT(1), /* set if 0->1 */
- COND_FALL_MASK = BIT(2), /* set if 1->0 */
+ COND_CURR_MASK = BIT(0), /* current value */
+ COND_RISE_MASK = BIT(1), /* set if 0->1 */
+ COND_FALL_MASK = BIT(2), /* set if 1->0 */
};
void cond_init(cond_t *c, int val)
@@ -319,8 +269,8 @@ int cond_went(cond_t *c, int val)
* *offset<0. If argc<shift+1, leaves size unchanged, returning error if
* *size<0.
*/
-int parse_offset_size(int argc, char **argv, int shift,
- int *offset, int *size)
+int parse_offset_size(int argc, const char **argv, int shift, int *offset,
+ int *size)
{
char *e;
int i;
@@ -417,10 +367,10 @@ int binary_first_base3_from_bits(int *bits, int nbits)
switch (bits[i]) {
case 0: /* Ignore '0' digits. */
break;
- case 1: /* Account for binaries 0 to 2^i - 1. */
+ case 1: /* Account for binaries 0 to 2^i - 1. */
binary_below += 1 << i;
break;
- case 2: /* Account for binaries 0 to 2^(i+1) - 1. */
+ case 2: /* Account for binaries 0 to 2^(i+1) - 1. */
binary_below += 1 << (i + 1);
has_z = 1;
}