diff options
Diffstat (limited to 'lib/avb/libavb/avb_util.c')
-rw-r--r-- | lib/avb/libavb/avb_util.c | 104 |
1 files changed, 10 insertions, 94 deletions
diff --git a/lib/avb/libavb/avb_util.c b/lib/avb/libavb/avb_util.c index 43662b4..435e556 100644 --- a/lib/avb/libavb/avb_util.c +++ b/lib/avb/libavb/avb_util.c @@ -24,8 +24,6 @@ #include "avb_util.h" -#include <stdarg.h> - uint32_t avb_be32toh(uint32_t in) { uint8_t* d = (uint8_t*)∈ uint32_t ret; @@ -85,17 +83,13 @@ int avb_safe_memcmp(const void* s1, const void* s2, size_t n) { const unsigned char* us2 = s2; int result = 0; - if (0 == n) { - return 0; - } + if (0 == n) return 0; /* * Code snippet without data-dependent branch due to Nate Lawson * (nate@root.org) of Root Labs. */ - while (n--) { - result |= *us1++ ^ *us2++; - } + while (n--) result |= *us1++ ^ *us2++; return result != 0; } @@ -118,9 +112,7 @@ bool avb_safe_add_to(uint64_t* value, uint64_t value_to_add) { bool avb_safe_add(uint64_t* out_result, uint64_t a, uint64_t b) { uint64_t dummy; - if (out_result == NULL) { - out_result = &dummy; - } + if (out_result == NULL) out_result = &dummy; *out_result = a; return avb_safe_add_to(out_result, b); } @@ -168,12 +160,8 @@ fail: return false; } -bool avb_str_concat(char* buf, - size_t buf_size, - const char* str1, - size_t str1_len, - const char* str2, - size_t str2_len) { +bool avb_str_concat(char* buf, size_t buf_size, const char* str1, + size_t str1_len, const char* str2, size_t str2_len) { uint64_t combined_len; if (!avb_safe_add(&combined_len, str1_len, str2_len)) { @@ -232,26 +220,21 @@ const char* avb_strstr(const char* haystack, const char* needle) { * |needle| matches. If so, check the rest of |needle|. */ for (n = 0; haystack[n] != '\0'; n++) { - if (haystack[n] != needle[0]) { - continue; - } + if (haystack[n] != needle[0]) continue; for (m = 1;; m++) { if (needle[m] == '\0') { return haystack + n; } - if (haystack[n + m] != needle[m]) { - break; - } + if (haystack[n + m] != needle[m]) break; } } return NULL; } -const char* avb_strv_find_str(const char* const* strings, - const char* str, +const char* avb_strv_find_str(const char* const* strings, const char* str, size_t str_size) { size_t n; for (n = 0; strings[n] != NULL; n++) { @@ -279,9 +262,7 @@ char* avb_replace(const char* str, const char* search, const char* replace) { size_t num_new; s = avb_strstr(str, search); - if (s == NULL) { - break; - } + if (s == NULL) break; num_before = s - str; @@ -324,9 +305,7 @@ char* avb_replace(const char* str, const char* search, const char* replace) { size_t num_remaining = avb_strlen(str_after_last_replace); size_t num_new = ret_len + num_remaining + 1; char* new_str = avb_malloc(num_new); - if (ret == NULL) { - goto out; - } + if (ret == NULL) goto out; avb_memcpy(new_str, ret, ret_len); avb_memcpy(new_str + ret_len, str_after_last_replace, num_remaining); new_str[num_new - 1] = '\0'; @@ -338,66 +317,3 @@ char* avb_replace(const char* str, const char* search, const char* replace) { out: return ret; } - -/* We only support a limited amount of strings in avb_strdupv(). */ -#define AVB_STRDUPV_MAX_NUM_STRINGS 32 - -char* avb_strdupv(const char* str, ...) { - va_list ap; - const char* strings[AVB_STRDUPV_MAX_NUM_STRINGS]; - size_t lengths[AVB_STRDUPV_MAX_NUM_STRINGS]; - size_t num_strings, n; - uint64_t total_length; - char *ret = NULL, *dest; - - num_strings = 0; - total_length = 0; - va_start(ap, str); - do { - size_t str_len = avb_strlen(str); - strings[num_strings] = str; - lengths[num_strings] = str_len; - if (!avb_safe_add_to(&total_length, str_len)) { - avb_fatal("Overflow while determining total length.\n"); - break; - } - num_strings++; - if (num_strings == AVB_STRDUPV_MAX_NUM_STRINGS) { - avb_fatal("Too many strings passed.\n"); - break; - } - str = va_arg(ap, const char*); - } while (str != NULL); - va_end(ap); - - ret = avb_malloc(total_length + 1); - if (ret == NULL) { - goto out; - } - - dest = ret; - for (n = 0; n < num_strings; n++) { - avb_memcpy(dest, strings[n], lengths[n]); - dest += lengths[n]; - } - *dest = '\0'; - avb_assert(dest == ret + total_length); - -out: - return ret; -} - -const char* avb_basename(const char* str) { - int64_t n; - size_t len; - - len = avb_strlen(str); - if (len >= 2) { - for (n = len - 2; n >= 0; n--) { - if (str[n] == '/') { - return str + n + 1; - } - } - } - return str; -} |