summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile15
-rw-r--r--test/overflow.c13
-rw-r--r--test/underflow.c13
-rw-r--r--test/zero.c13
4 files changed, 53 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 0dd5261..e8a413f 100644
--- a/Makefile
+++ b/Makefile
@@ -1,15 +1,20 @@
.POSIX:
+BINDIR=bin
LIBDIR=lib
OBJDIR=obj
SRCDIR=src
INCDIR=include
+TESTDIR=test
CFLAGS=-I$(INCDIR) -Wall -Wextra -Wpedantic -g
OBJECTS=$(OBJDIR)/mapalloc.o
+TESTS=$(BINDIR)/overflow $(BINDIR)/underflow $(BINDIR)/zero
all: $(LIBDIR)/libmapalloc.a $(LIBDIR)/libmapalloc.so
+tests: $(TESTS)
+
$(OBJDIR)/mapalloc.o: $(SRCDIR)/mapalloc.c $(INCDIR)/mapalloc.h
@mkdir -p $(@D)
$(CC) -c -o $@ $(CFLAGS) $(SRCDIR)/$(*F).c
@@ -22,5 +27,13 @@ $(LIBDIR)/libmapalloc.so: $(OBJECTS)
@mkdir -p $(@D)
$(CC) -o $@ -shared $(OBJECTS)
+$(BINDIR)/overflow: $(TESTDIR)/overflow.c $(LIBDIR)/libmapalloc.a
+$(BINDIR)/underflow: $(TESTDIR)/underflow.c $(LIBDIR)/libmapalloc.a
+$(BINDIR)/zero: $(TESTDIR)/zero.c $(LIBDIR)/libmapalloc.a
+
+$(TESTS):
+ @mkdir -p $(@D)
+ $(CC) -o $@ $(CFLAGS) $(TESTDIR)/$(@F).c -L$(LIBDIR) -lmapalloc
+
clean:
- $(RM) -rf $(LIBDIR) $(OBJDIR)
+ $(RM) -rf $(LIBDIR) $(OBJDIR) $(BINDIR)
diff --git a/test/overflow.c b/test/overflow.c
new file mode 100644
index 0000000..8bb1681
--- /dev/null
+++ b/test/overflow.c
@@ -0,0 +1,13 @@
+#define _POSIX_C_SOURCE 200809L
+#include <stdio.h>
+#include <unistd.h>
+#include "mapalloc.h"
+
+int main(void)
+{
+ char *ptr = map_malloc(1);
+ long pagesize = sysconf(_SC_PAGESIZE);
+ printf("ptr: %p, pagesize %ld\n", ptr, pagesize);
+ ptr[pagesize] = '\0';
+ printf("shouldn't get here\n");
+}
diff --git a/test/underflow.c b/test/underflow.c
new file mode 100644
index 0000000..f23aa6d
--- /dev/null
+++ b/test/underflow.c
@@ -0,0 +1,13 @@
+#define _POSIX_C_SOURCE 200809L
+#include <stdio.h>
+#include <unistd.h>
+#include "mapalloc.h"
+
+int main(void)
+{
+ char *ptr = map_malloc(1);
+ long pagesize = sysconf(_SC_PAGESIZE);
+ printf("ptr: %p, pagesize %ld\n", ptr, pagesize);
+ ptr[-1] = '\0';
+ printf("shouldn't get here\n");
+}
diff --git a/test/zero.c b/test/zero.c
new file mode 100644
index 0000000..7be3ad2
--- /dev/null
+++ b/test/zero.c
@@ -0,0 +1,13 @@
+#define _POSIX_C_SOURCE 200809L
+#include <stdio.h>
+#include <unistd.h>
+#include "mapalloc.h"
+
+int main(void)
+{
+ char *ptr = map_malloc(0);
+ long pagesize = sysconf(_SC_PAGESIZE);
+ printf("ptr: %p, pagesize %ld\n", ptr, pagesize);
+ ptr[0] = '\0';
+ printf("shouldn't get here\n");
+}