From 468341d34e32e8a76193ec281a47504ad57944e8 Mon Sep 17 00:00:00 2001 From: Xamora Date: Wed, 19 Feb 2025 22:15:36 +0100 Subject: [PATCH] trying to patch segfault mmap --- .gitignore | 1 + compile_flags.txt | 1 + inc/malloc.h | 4 ++-- main.c | 12 +++++++++--- main.sh | 6 ++++-- src/malloc.c | 14 +++++++++++--- 6 files changed, 28 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index d23b815..208ddc4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ build *.so +main diff --git a/compile_flags.txt b/compile_flags.txt index ad80385..e60c28c 100644 --- a/compile_flags.txt +++ b/compile_flags.txt @@ -7,3 +7,4 @@ -iquoteinc -iquotelib -fPIC +-g diff --git a/inc/malloc.h b/inc/malloc.h index 0ba2d07..e6ef3d8 100644 --- a/inc/malloc.h +++ b/inc/malloc.h @@ -4,9 +4,9 @@ #include #include -/*typedef struct { +typedef struct { u16 byte; -} meta_t ;*/ +} meta_t ; void free(void *ptr); void *malloc(size_t size); diff --git a/main.c b/main.c index 5fd4c7f..547bb80 100644 --- a/main.c +++ b/main.c @@ -1,9 +1,15 @@ -#include +#include "lib/libft/libft.h" #include "inc/malloc.h" +#include "lib/ft_printf/ft_printf.h" int main(void) { - void* test = malloc(4); - (void)test; + char* test = malloc(11); + if (!test) + return 1; + for (int i = 0; i < 11; i++) + test[i] = i + 32; + ft_printf(test); + free(test); return 0; } diff --git a/main.sh b/main.sh index 68a7e08..6d4c6a9 100755 --- a/main.sh +++ b/main.sh @@ -1,2 +1,4 @@ -export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD -gcc main.c -L. -lft_malloc -o main +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/ +gcc main.c -L. -lft_malloc -g -o main lib/lib.a +./main +#rm main diff --git a/src/malloc.c b/src/malloc.c index dcf2b0f..602b3bd 100644 --- a/src/malloc.c +++ b/src/malloc.c @@ -1,12 +1,20 @@ +#include +#include char *memory = nullptr; void * malloc(size_t size) { - if (!memory) - memory = mmap(nullptr, 4096 * 10, 0, PROT_READ | PROT_WRITE, 0, 0); + if (!memory) { + memory = mmap(nullptr, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, 0, 0); + if (memory == MAP_FAILED) { + printf("%d\n", errno); + //ft_printf_fd(2, "Error mmap\n"); + //return NULL; + } + } for (size_t i = 0; i < size; i++) { - ft_printf("test"); + //ft_printf("test"); } return memory;