fix: leaks

This commit is contained in:
gbrochar 2024-09-06 21:42:55 +02:00
parent 8e6dec0237
commit 00ef44ac08
1 changed files with 4 additions and 2 deletions

View File

@ -116,6 +116,7 @@ int pack_elf64(t_map file) {
t_payload64 payload = get_xor_payload64(); t_payload64 payload = get_xor_payload64();
ft_printf("info: using %s algorithm\n", payload.algo_name); ft_printf("info: using %s algorithm\n", payload.algo_name);
free(payload.algo_name);
// This should fallback to compression algorithm, or smaller payload (eg rsa->xor) // This should fallback to compression algorithm, or smaller payload (eg rsa->xor)
if (payload.len > (size_t)code_cave.size) { if (payload.len > (size_t)code_cave.size) {
printf("code cave size: %ld (0x%lx) bytes\n", code_cave.size, code_cave.size); printf("code cave size: %ld (0x%lx) bytes\n", code_cave.size, code_cave.size);
@ -140,20 +141,21 @@ int pack_elf64(t_map file) {
} }
ft_memcpy(payload.data + payload.private_key_offset, key, sizeof(uint64_t)); ft_memcpy(payload.data + payload.private_key_offset, key, sizeof(uint64_t));
payload.encrypt(file, key, *load_segment); payload.encrypt(file, key, *load_segment);
free(key);
} }
elf_header->e_entry = code_cave.data - file.data; elf_header->e_entry = code_cave.data - file.data;
load_segment->p_filesz += payload.len; load_segment->p_filesz += payload.len;
load_segment->p_memsz += payload.len; load_segment->p_memsz += payload.len;
load_segment->p_flags |= PF_W | PF_R; load_segment->p_flags |= PF_W | PF_R;
ft_memcpy(code_cave.data, payload.data, payload.len); ft_memcpy(code_cave.data, payload.data, payload.len);
free(payload.data);
int fd = open("woody", O_WRONLY | O_CREAT, 0755); int fd = open("woody", O_WRONLY | O_CREAT, 0755);
if (fd == -1) { if (fd == -1) {
return wdy_perror("woody"); return wdy_perror("woody");
} }
write(fd, file.data, file.size); write(fd, file.data, file.size);
munmap(file.data, file.size);
return RET_OK; return RET_OK;
} }