From af4ca63cb9a60e7622337ad9092fddbd6d8b47b3 Mon Sep 17 00:00:00 2001 From: David Hendriks <davidhendriks93@gmail.com> Date: Mon, 4 Nov 2019 23:48:30 +0000 Subject: [PATCH] made script to write function pointer to char and convert it back to a function pointer in a different function --- casting_pointer/compile.sh | 3 +++ casting_pointer/main | Bin 0 -> 8416 bytes casting_pointer/main.c | 41 +++++++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100755 casting_pointer/compile.sh create mode 100755 casting_pointer/main create mode 100644 casting_pointer/main.c diff --git a/casting_pointer/compile.sh b/casting_pointer/compile.sh new file mode 100755 index 0000000..d246e95 --- /dev/null +++ b/casting_pointer/compile.sh @@ -0,0 +1,3 @@ +# Compile a shared library +#gcc -shared -o libmean.so.1 -fPIC mean.c +gcc -o main -fPIC main.c diff --git a/casting_pointer/main b/casting_pointer/main new file mode 100755 index 0000000000000000000000000000000000000000..10c9409e09421519a3288a986fdb6b63949d7adb GIT binary patch literal 8416 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 QxVZgU)xbO}D(bZV4=jb3c>n+a literal 0 HcmV?d00001 diff --git a/casting_pointer/main.c b/casting_pointer/main.c new file mode 100644 index 0000000..a93ed26 --- /dev/null +++ b/casting_pointer/main.c @@ -0,0 +1,41 @@ +#include <stdio.h> +#include <stddef.h> + +typedef int (*fn_def)(void); + +int test1() +{ + // function to call + printf("Test\n"); +} + +void convert_and_call(void *fnvptr_val) +{ + // convert into pointer + fn_def fnptr = (fn_def)fnvptr_val; + fnptr(); +} + + +int main() +{ + void* fnvptr = (void*)&test1; + + + // print adress + printf("%p\n", &test1); + + // cast into char array + char* a=(char*)fnvptr; + + // print stuff + printf("%s\n", a); + printf("size: %ld\n",sizeof(a)); + + // cast into new void thing + void * fnvptr2 = (void*)a; + printf("%p\n", fnvptr2); + + // // convert into pointer + convert_and_call(fnvptr2); +} -- GitLab