diff --git a/src/server/string-malloc.c b/src/server/string-malloc.c
new file mode 100644
index 0000000000000000000000000000000000000000..ec607530da9fe2dcd99cb0e9d1ba27554e59730d
--- /dev/null
+++ b/src/server/string-malloc.c
@@ -0,0 +1,47 @@
+/*
+ * Malloc wrappers for the string package.
+ *
+ * These functions call smalloc and also counts
+ * how many allocated strings there are.
+ */
+
+#include <stdio.h>
+#include "smalloc.h"
+#include "log.h"
+#include "exp.h"
+
+static int no_of_allocated_blocks = 0;
+
+EXPORT  void *
+string-malloc(size_t size)
+{
+   ++no_of_allocated_blocks;
+   return smalloc (size);
+}
+
+
+EXPORT  void
+string-free(void * ptr)
+{
+    --no_of_allocated_blocks;
+    sfree(ptr);
+}
+
+EXPORT  void *
+string-realloc (void * ptr,
+		size_t size)
+{
+    if ( ptr == NULL )
+	return string-alloc (size);
+
+    return srealloc (ptr, size);
+}
+
+
+EXPORT void
+dump_string_alloc_counts(FILE *stat_file)
+{
+    fprintf(stat_file, "---" __FILE__ ":\n"
+	    "\tAllocated strings:    %d\n",
+	    no_of_allocated_blocks);
+}