Skip to content

Commit

Permalink
Loader: Fix BusFault in handling of OOM (#3992)
Browse files Browse the repository at this point in the history
* Loader: Fix BusFault in handling of OOM
* Furi: fix crash in aligned_alloc, cleanup aligned_alloc use

Co-authored-by: あく <[email protected]>
  • Loading branch information
Willy-JL and skotopes authored Dec 18, 2024
1 parent 9c96bbf commit a7b3a13
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 8 deletions.
4 changes: 3 additions & 1 deletion furi/core/memmgr.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,5 +106,7 @@ void* aligned_malloc(size_t size, size_t alignment) {
}

void aligned_free(void* p) {
free(((void**)p)[-1]);
if(p) {
free(((void**)p)[-1]);
}
}
12 changes: 5 additions & 7 deletions lib/flipper_application/elf/elf_file.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@

#define TAG "Elf"

#define ELF_NAME_BUFFER_LEN 32
#define SECTION_OFFSET(e, n) ((e)->section_table + (n) * sizeof(Elf32_Shdr))
#define IS_FLAGS_SET(v, m) (((v) & (m)) == (m))
#define ELF_NAME_BUFFER_LEN 32
#define SECTION_OFFSET(e, n) ((e)->section_table + (n) * sizeof(Elf32_Shdr))
#define IS_FLAGS_SET(v, m) (((v) & (m)) == (m))
#define RESOLVER_THREAD_YIELD_STEP 30
#define FAST_RELOCATION_VERSION 1
#define FAST_RELOCATION_VERSION 1

// #define ELF_DEBUG_LOG 1

Expand Down Expand Up @@ -830,9 +830,7 @@ void elf_file_free(ELFFile* elf) {
for(ELFSectionDict_it(it, elf->sections); !ELFSectionDict_end_p(it);
ELFSectionDict_next(it)) {
const ELFSectionDict_itref_t* itref = ELFSectionDict_cref(it);
if(itref->value.data) {
aligned_free(itref->value.data);
}
aligned_free(itref->value.data);
if(itref->value.fast_rel) {
aligned_free(itref->value.fast_rel->data);
free(itref->value.fast_rel);
Expand Down

0 comments on commit a7b3a13

Please sign in to comment.