mirror of
https://github.com/CTCaer/hekate.git
synced 2024-09-03 21:39:00 +00:00
bdk: heap: add zalloc and utilize it
This commit is contained in:
parent
9e41aa7759
commit
d687b53249
@ -107,7 +107,7 @@
|
|||||||
**************************************/
|
**************************************/
|
||||||
#include <mem/heap.h> /* malloc, calloc, free */
|
#include <mem/heap.h> /* malloc, calloc, free */
|
||||||
#define ALLOC(s) malloc(s)
|
#define ALLOC(s) malloc(s)
|
||||||
#define ALLOC_AND_ZERO(s) calloc(1,s)
|
#define ALLOC_AND_ZERO(s) zalloc(s)
|
||||||
#define FREEMEM free
|
#define FREEMEM free
|
||||||
#include <string.h> /* memset, memcpy */
|
#include <string.h> /* memset, memcpy */
|
||||||
#define MEM_INIT memset
|
#define MEM_INIT memset
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018 naehrwert
|
* Copyright (c) 2018 naehrwert
|
||||||
* Copyright (c) 2018-2020 CTCaer
|
* Copyright (c) 2018-2024 CTCaer
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
* under the terms and conditions of the GNU General Public License,
|
* under the terms and conditions of the GNU General Public License,
|
||||||
@ -159,6 +159,13 @@ void *calloc(u32 num, u32 size)
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void *zalloc(u32 size)
|
||||||
|
{
|
||||||
|
void *res = (void *)_heap_alloc(size);
|
||||||
|
memset(res, 0, ALIGN(size, sizeof(hnode_t))); // Clear the aligned size.
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
void free(void *buf)
|
void free(void *buf)
|
||||||
{
|
{
|
||||||
if (buf >= _heap.start)
|
if (buf >= _heap.start)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018 naehrwert
|
* Copyright (c) 2018 naehrwert
|
||||||
* Copyright (c) 2018-2020 CTCaer
|
* Copyright (c) 2018-2024 CTCaer
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
* under the terms and conditions of the GNU General Public License,
|
* under the terms and conditions of the GNU General Public License,
|
||||||
@ -48,6 +48,7 @@ void heap_init(void *base);
|
|||||||
void heap_set(heap_t *heap);
|
void heap_set(heap_t *heap);
|
||||||
void *malloc(u32 size);
|
void *malloc(u32 size);
|
||||||
void *calloc(u32 num, u32 size);
|
void *calloc(u32 num, u32 size);
|
||||||
|
void *zalloc(u32 size);
|
||||||
void free(void *buf);
|
void free(void *buf);
|
||||||
void heap_monitor(heap_monitor_t *mon, bool print_node_stats);
|
void heap_monitor(heap_monitor_t *mon, bool print_node_stats);
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018 naehrwert
|
* Copyright (c) 2018 naehrwert
|
||||||
* Copyright (c) 2018-2022 CTCaer
|
* Copyright (c) 2018-2024 CTCaer
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
* under the terms and conditions of the GNU General Public License,
|
* under the terms and conditions of the GNU General Public License,
|
||||||
@ -182,7 +182,7 @@ static int _se_execute_one_block(u32 op, void *dst, u32 dst_size, const void *sr
|
|||||||
if (!src || !dst)
|
if (!src || !dst)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
u8 *block = (u8 *)calloc(1, SE_AES_BLOCK_SIZE);
|
u8 *block = (u8 *)zalloc(SE_AES_BLOCK_SIZE);
|
||||||
|
|
||||||
SE(SE_CRYPTO_BLOCK_COUNT_REG) = 1 - 1;
|
SE(SE_CRYPTO_BLOCK_COUNT_REG) = 1 - 1;
|
||||||
|
|
||||||
@ -657,8 +657,8 @@ void se_get_aes_keys(u8 *buf, u8 *keys, u32 keysize)
|
|||||||
int se_aes_cmac_128(u32 ks, void *dst, const void *src, u32 src_size)
|
int se_aes_cmac_128(u32 ks, void *dst, const void *src, u32 src_size)
|
||||||
{
|
{
|
||||||
int res = 0;
|
int res = 0;
|
||||||
u8 *key = (u8 *)calloc(1, SE_KEY_128_SIZE);
|
u8 *key = (u8 *)zalloc(SE_KEY_128_SIZE);
|
||||||
u8 *last_block = (u8 *)calloc(1, SE_AES_BLOCK_SIZE);
|
u8 *last_block = (u8 *)zalloc(SE_AES_BLOCK_SIZE);
|
||||||
|
|
||||||
se_aes_iv_clear(ks);
|
se_aes_iv_clear(ks);
|
||||||
se_aes_iv_updated_clear(ks);
|
se_aes_iv_updated_clear(ks);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018 naehrwert
|
* Copyright (c) 2018 naehrwert
|
||||||
* Copyright (c) 2019-2022 CTCaer
|
* Copyright (c) 2019-2024 CTCaer
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
* under the terms and conditions of the GNU General Public License,
|
* under the terms and conditions of the GNU General Public License,
|
||||||
@ -135,7 +135,7 @@ int emmc_set_partition(u32 partition) { return sdmmc_storage_set_mmc_partition(&
|
|||||||
|
|
||||||
void emmc_gpt_parse(link_t *gpt)
|
void emmc_gpt_parse(link_t *gpt)
|
||||||
{
|
{
|
||||||
gpt_t *gpt_buf = (gpt_t *)calloc(GPT_NUM_BLOCKS, EMMC_BLOCKSIZE);
|
gpt_t *gpt_buf = (gpt_t *)zalloc(GPT_NUM_BLOCKS * EMMC_BLOCKSIZE);
|
||||||
|
|
||||||
#ifdef BDK_EMUMMC_ENABLE
|
#ifdef BDK_EMUMMC_ENABLE
|
||||||
emummc_storage_read(GPT_FIRST_LBA, GPT_NUM_BLOCKS, gpt_buf);
|
emummc_storage_read(GPT_FIRST_LBA, GPT_NUM_BLOCKS, gpt_buf);
|
||||||
@ -149,7 +149,7 @@ void emmc_gpt_parse(link_t *gpt)
|
|||||||
|
|
||||||
for (u32 i = 0; i < gpt_buf->header.num_part_ents; i++)
|
for (u32 i = 0; i < gpt_buf->header.num_part_ents; i++)
|
||||||
{
|
{
|
||||||
emmc_part_t *part = (emmc_part_t *)calloc(sizeof(emmc_part_t), 1);
|
emmc_part_t *part = (emmc_part_t *)zalloc(sizeof(emmc_part_t));
|
||||||
|
|
||||||
if (gpt_buf->entries[i].lba_start < gpt_buf->header.first_use_lba)
|
if (gpt_buf->entries[i].lba_start < gpt_buf->header.first_use_lba)
|
||||||
continue;
|
continue;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018 CTCaer
|
* Copyright (c) 2018-2024 CTCaer
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
* under the terms and conditions of the GNU General Public License,
|
* under the terms and conditions of the GNU General Public License,
|
||||||
@ -30,8 +30,8 @@ char *dirlist(const char *directory, const char *pattern, bool includeHiddenFile
|
|||||||
DIR dir;
|
DIR dir;
|
||||||
FILINFO fno;
|
FILINFO fno;
|
||||||
|
|
||||||
char *dir_entries = (char *)calloc(MAX_ENTRIES, 256);
|
char *dir_entries = (char *)zalloc(MAX_ENTRIES * 256);
|
||||||
char *temp = (char *)calloc(1, 256);
|
char *temp = (char *)zalloc(256);
|
||||||
|
|
||||||
if (!pattern && !f_opendir(&dir, directory))
|
if (!pattern && !f_opendir(&dir, directory))
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018 naehrwert
|
* Copyright (c) 2018 naehrwert
|
||||||
* Copyright (c) 2018-2022 CTCaer
|
* Copyright (c) 2018-2024 CTCaer
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
* under the terms and conditions of the GNU General Public License,
|
* under the terms and conditions of the GNU General Public License,
|
||||||
@ -41,7 +41,7 @@ ini_sec_t *_ini_create_section(link_t *dst, ini_sec_t *csec, char *name, u8 type
|
|||||||
|
|
||||||
// Calculate total allocation size.
|
// Calculate total allocation size.
|
||||||
u32 len = name ? strlen(name) + 1 : 0;
|
u32 len = name ? strlen(name) + 1 : 0;
|
||||||
char *buf = calloc(sizeof(ini_sec_t) + len, 1);
|
char *buf = zalloc(sizeof(ini_sec_t) + len);
|
||||||
|
|
||||||
csec = (ini_sec_t *)buf;
|
csec = (ini_sec_t *)buf;
|
||||||
csec->name = strcpy_ns(buf + sizeof(ini_sec_t), name);
|
csec->name = strcpy_ns(buf + sizeof(ini_sec_t), name);
|
||||||
@ -144,7 +144,7 @@ int ini_parse(link_t *dst, char *ini_path, bool is_dir)
|
|||||||
// Calculate total allocation size.
|
// Calculate total allocation size.
|
||||||
u32 klen = strlen(&lbuf[0]) + 1;
|
u32 klen = strlen(&lbuf[0]) + 1;
|
||||||
u32 vlen = strlen(&lbuf[i + 1]) + 1;
|
u32 vlen = strlen(&lbuf[i + 1]) + 1;
|
||||||
char *buf = calloc(sizeof(ini_kv_t) + klen + vlen, 1);
|
char *buf = zalloc(sizeof(ini_kv_t) + klen + vlen);
|
||||||
|
|
||||||
ini_kv_t *kv = (ini_kv_t *)buf;
|
ini_kv_t *kv = (ini_kv_t *)buf;
|
||||||
buf += sizeof(ini_kv_t);
|
buf += sizeof(ini_kv_t);
|
||||||
|
@ -211,7 +211,7 @@ u32 crc32_calc(u32 crc, const u8 *buf, u32 len)
|
|||||||
// Calculate CRC table.
|
// Calculate CRC table.
|
||||||
if (!table)
|
if (!table)
|
||||||
{
|
{
|
||||||
table = calloc(256, sizeof(u32));
|
table = zalloc(256 * sizeof(u32));
|
||||||
for (u32 i = 0; i < 256; i++)
|
for (u32 i = 0; i < 256; i++)
|
||||||
{
|
{
|
||||||
u32 rem = i;
|
u32 rem = i;
|
||||||
|
Loading…
Reference in New Issue
Block a user