summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile6
-rw-r--r--test/wrapper.c22
2 files changed, 27 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 867b86c..b31f413 100644
--- a/Makefile
+++ b/Makefile
@@ -21,7 +21,7 @@ all: $(LIBDIR)/libmapalloc.a $(LIBDIR)/libwrapalloc.so
#$(LIBDIR)/libmapalloc.so
-tests: $(TESTS)
+tests: $(TESTS) $(BINDIR)/wrapper
$(OBJDIR)/mapalloc.o: $(SRCDIR)/mapalloc.c $(INCDIR)/mapalloc.h
@mkdir -p $(@D)
@@ -51,6 +51,10 @@ $(BINDIR)/realloc: $(TESTDIR)/realloc.c
$(BINDIR)/use-after-free: $(TESTDIR)/use-after-free.c
$(BINDIR)/double-free: $(TESTDIR)/double-free.c
+$(BINDIR)/wrapper: $(TESTDIR)/wrapper.c
+ @mkdir -p $(@D)
+ $(CC) -o $@ $(CFLAGS) $(TESTDIR)/$(@F).c
+
$(TESTS):
@mkdir -p $(@D)
$(CC) -o $@ $(CFLAGS) $(TESTDIR)/$(@F).c -L$(LIBDIR) -lmapalloc
diff --git a/test/wrapper.c b/test/wrapper.c
new file mode 100644
index 0000000..a260894
--- /dev/null
+++ b/test/wrapper.c
@@ -0,0 +1,22 @@
+#define _POSIX_C_SOURCE 200809L
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+int main(void)
+{
+ const char buf[] = "THIS IS A CONSTANT STRING";
+
+ char *ptr = realloc(NULL, sizeof(buf));
+ memcpy(ptr, buf, sizeof(buf));
+ printf("%p: %s\n", ptr, ptr);
+
+ ptr = realloc(ptr, sizeof(buf) * 2);
+ memcpy(ptr + sizeof(buf) - 1, buf, sizeof(buf));
+ printf("%p: %s\n", ptr, ptr);
+
+ ptr = realloc(ptr, sizeof(buf) * sysconf(_SC_PAGESIZE));
+ memcpy(ptr + (2 * sizeof(buf)) - 2, buf, sizeof(buf));
+ printf("%p: %s\n", ptr, ptr);
+}