From a375e5b07d96a67b6672e7c31b1a1c20c73d3bcd Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 5 Jul 2022 17:49:45 +0200 Subject: [PATCH] Moved the memory allocator and its util functions out of the EIP712 subdirectory and gave it its own compilation flag Also removed dead code --- Makefile | 8 ++++++- .../signMessageEIP712 => src_common}/mem.c | 22 +++---------------- .../signMessageEIP712 => src_common}/mem.h | 8 ++----- .../mem_utils.c | 20 ++--------------- src_common/mem_utils.h | 16 ++++++++++++++ src_features/signMessageEIP712/mem_utils.h | 18 --------------- 6 files changed, 30 insertions(+), 62 deletions(-) rename {src_features/signMessageEIP712 => src_common}/mem.c (78%) rename {src_features/signMessageEIP712 => src_common}/mem.h (62%) rename {src_features/signMessageEIP712 => src_common}/mem_utils.c (81%) create mode 100644 src_common/mem_utils.h delete mode 100644 src_features/signMessageEIP712/mem_utils.h diff --git a/Makefile b/Makefile index 536c003..67efcde 100644 --- a/Makefile +++ b/Makefile @@ -137,9 +137,15 @@ DEFINES += HAVE_NFT_TESTING_KEY endif endif +# Dynamic memory allocator +ifneq ($(TARGET_NAME),TARGET_NANOS) +DEFINES += HAVE_DYN_MEM_ALLOC +endif + # EIP-712 ifneq ($(TARGET_NAME),TARGET_NANOS) -DEFINES += HAVE_EIP712_FULL_SUPPORT HAVE_EIP712_TESTING_KEY +DEFINES += HAVE_EIP712_FULL_SUPPORT +DEFINES += HAVE_EIP712_TESTING_KEY endif # Enabling debug PRINTF diff --git a/src_features/signMessageEIP712/mem.c b/src_common/mem.c similarity index 78% rename from src_features/signMessageEIP712/mem.c rename to src_common/mem.c index e4c01c4..291c4d7 100644 --- a/src_features/signMessageEIP712/mem.c +++ b/src_common/mem.c @@ -1,16 +1,12 @@ -#ifdef HAVE_EIP712_FULL_SUPPORT +#ifdef HAVE_DYN_MEM_ALLOC #include #include "mem.h" -#include "shared_context.h" #define SIZE_MEM_BUFFER 5120 static uint8_t mem_buffer[SIZE_MEM_BUFFER]; static size_t mem_idx; -#ifdef DEBUG -size_t mem_max; -#endif /** @@ -19,9 +15,6 @@ size_t mem_max; void mem_init(void) { mem_idx = 0; -#ifdef DEBUG - mem_max = 0; -#endif } /** @@ -34,6 +27,7 @@ void mem_reset(void) /** * Allocates a chunk of the memory buffer of a given size. + * * Checks to see if there are enough space left in the memory buffer, returns * the current location in the memory buffer and moves the index accordingly. * @@ -44,22 +38,12 @@ void *mem_alloc(size_t size) { if ((mem_idx + size) > SIZE_MEM_BUFFER) // Buffer exceeded { -#ifdef DEBUG - PRINTF("Memory exhausted!\n"); -#endif return NULL; } mem_idx += size; -#ifdef DEBUG - if (mem_idx > mem_max) - { - mem_max = mem_idx; - } -#endif return &mem_buffer[mem_idx - size]; } - /** * De-allocates a chunk of memory buffer by a given size. * @@ -77,4 +61,4 @@ void mem_dealloc(size_t size) } } -#endif // HAVE_EIP712_FULL_SUPPORT +#endif // HAVE_DYN_MEM_ALLOC diff --git a/src_features/signMessageEIP712/mem.h b/src_common/mem.h similarity index 62% rename from src_features/signMessageEIP712/mem.h rename to src_common/mem.h index 0cb9aca..e885137 100644 --- a/src_features/signMessageEIP712/mem.h +++ b/src_common/mem.h @@ -1,7 +1,7 @@ #ifndef MEM_H_ #define MEM_H_ -#ifdef HAVE_EIP712_FULL_SUPPORT +#ifdef HAVE_DYN_MEM_ALLOC #include @@ -10,10 +10,6 @@ void mem_reset(void); void *mem_alloc(size_t size); void mem_dealloc(size_t size); -#ifdef DEBUG -extern size_t mem_max; -#endif - -#endif // HAVE_EIP712_FULL_SUPPORT +#endif // HAVE_DYN_MEM_ALLOC #endif // MEM_H_ diff --git a/src_features/signMessageEIP712/mem_utils.c b/src_common/mem_utils.c similarity index 81% rename from src_features/signMessageEIP712/mem_utils.c rename to src_common/mem_utils.c index e45280f..e49a321 100644 --- a/src_features/signMessageEIP712/mem_utils.c +++ b/src_common/mem_utils.c @@ -1,4 +1,4 @@ -#ifdef HAVE_EIP712_FULL_SUPPORT +#ifdef HAVE_DYN_MEM_ALLOC #include #include @@ -6,22 +6,6 @@ #include "mem.h" #include "mem_utils.h" -void *mem_alloc_and_copy(const void *data, size_t size) -{ - void *mem_ptr; - - if ((mem_ptr = mem_alloc(size)) != NULL) - { - memmove(mem_ptr, data, size); - } - return mem_ptr; -} - -char *mem_alloc_and_copy_char(char c) -{ - return mem_alloc_and_copy(&c, sizeof(char)); -} - /** * Format an unsigned number up to 32-bit into memory into an ASCII string. * @@ -79,4 +63,4 @@ void *mem_alloc_and_align(size_t size, size_t alignment) return mem_alloc(size); } -#endif // HAVE_EIP712_FULL_SUPPORT +#endif // HAVE_DYN_MEM_ALLOC diff --git a/src_common/mem_utils.h b/src_common/mem_utils.h new file mode 100644 index 0000000..1633d97 --- /dev/null +++ b/src_common/mem_utils.h @@ -0,0 +1,16 @@ +#ifndef MEM_UTILS_H_ +#define MEM_UTILS_H_ + +#ifdef HAVE_DYN_MEM_ALLOC + +#include +#include + +#define MEM_ALLOC_AND_ALIGN_TYPE(type) mem_alloc_and_align(sizeof(type), __alignof__(type)) + +char *mem_alloc_and_format_uint(uint32_t value, uint8_t *const written_chars); +void *mem_alloc_and_align(size_t size, size_t alignment); + +#endif // HAVE_DYN_MEM_ALLOC + +#endif // MEM_UTILS_H_ diff --git a/src_features/signMessageEIP712/mem_utils.h b/src_features/signMessageEIP712/mem_utils.h deleted file mode 100644 index 3064f9b..0000000 --- a/src_features/signMessageEIP712/mem_utils.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef MEM_UTILS_H_ -#define MEM_UTILS_H_ - -#ifdef HAVE_EIP712_FULL_SUPPORT - -#include -#include - -#define MEM_ALLOC_AND_ALIGN_TYPE(type) mem_alloc_and_align(sizeof(type), __alignof__(type)) - -char *mem_alloc_and_copy_char(char c); -void *mem_alloc_and_copy(const void *data, size_t size); -char *mem_alloc_and_format_uint(uint32_t value, uint8_t *const written_chars); -void *mem_alloc_and_align(size_t size, size_t alignment); - -#endif // HAVE_EIP712_FULL_SUPPORT - -#endif // MEM_UTILS_H_