HI guys. I'm having problem with freeing memory
num_file = get_filenames(&files);
for (int i = 0; i < num_file; i++)
{
do
{
read_file_data(files[i], &data, chunk_size, &data_size, &prev_file_pos);
printf("data: %s\n", data);
long alloc_size = data_size + EVP_MAX_BLOCK_LENGTH;
tmp = realloc(enct, alloc_size);
if (tmp == NULL)
{
printf("Failed realloc %ld bytes for encrypted!\n", alloc_size);
exit(EXIT_FAILURE);
}
enct = tmp;
tmp = NULL;
tmp = realloc(dect, alloc_size);
if (tmp == NULL)
{
printf("Failed realloc %ld bytes for decrypted!\n", alloc_size);
exit(EXIT_FAILURE);
}
dect = tmp;
tmp = NULL;
printf("dect pointer after realloc: %p\n", (void *)dect);
memset(enct, 0, alloc_size);
memset(dect, 0, alloc_size);
int len = enc(master_key, iv, data, enct, alloc_size);
long dec_len = dec(master_key, iv, enct, dect, len);
dect[dec_len] = '\0';
printf("encrypted: %02x\n", enct);
printf("decrypted: %s\n", dect);
printf("dec len %ld : alloc size %ld\n", dec_len, alloc_size);
}
while (prev_file_pos > chunk_size);
free(files[i]);
free(data);
}
free(files);
free(enct);
free(dect);
output:
dect pointer after realloc: 0x55e5b9278320
encrypted: b927cf80
decrypted: Hello world 123
dec len 48 : alloc size 48
dect pointer after realloc: 0x55e5b9278320
end of code
double free or corruption (out)
zsh: IOT instruction (core dumped) ./bin/safecli