From b026a7c91577cc79fc820d5ee016f892930ffe52 Mon Sep 17 00:00:00 2001 From: Jakob Hasse Date: Fri, 26 Apr 2024 10:14:47 +0200 Subject: [PATCH] fix(linux): calling getrandom() outside assert() * Expressions inside assert are completely removed in release builds --- components/esp_hw_support/port/linux/esp_random.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/components/esp_hw_support/port/linux/esp_random.c b/components/esp_hw_support/port/linux/esp_random.c index e1dc505a2e..19bed4dc65 100644 --- a/components/esp_hw_support/port/linux/esp_random.c +++ b/components/esp_hw_support/port/linux/esp_random.c @@ -17,13 +17,16 @@ static void __attribute__((constructor)) esp_random_init(void) { } uint32_t esp_random(void) { uint32_t random_number; - assert(getentropy(&random_number, sizeof(random_number)) == 0); + int result = getentropy(&random_number, sizeof(random_number)); + assert(result == 0); + (void)result; return random_number; } void esp_fill_random(void *buf, size_t len) { assert(buf != NULL); + int result; // Note that we can't use getentropy() with len > 256 directly (see getentropy man page), // hence reading in chunks @@ -31,8 +34,12 @@ void esp_fill_random(void *buf, size_t len) const size_t REST_CHUNK_SIZE = len % GETENTROPY_MAX_LEN; for (size_t chunk_num = 0; chunk_num < FULL_CHUNKS_NUM; chunk_num++) { - assert(getentropy(buf + chunk_num * GETENTROPY_MAX_LEN, GETENTROPY_MAX_LEN) == 0); + result = getentropy(buf + chunk_num * GETENTROPY_MAX_LEN, GETENTROPY_MAX_LEN); + assert(result == 0); + (void)result; } - assert(getentropy(buf + FULL_CHUNKS_NUM * GETENTROPY_MAX_LEN, REST_CHUNK_SIZE) == 0); + result = getentropy(buf + FULL_CHUNKS_NUM * GETENTROPY_MAX_LEN, REST_CHUNK_SIZE); + assert(result == 0); + (void)result; }