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