diff -Nuar a/config.c b/config.c
--- a/config.c	2016-01-25 19:54:37.170038598 +0100
+++ b/config.c	2016-01-25 19:58:56.040043810 +0100
@@ -49,39 +49,6 @@
 #include "asprintf.c"
 #endif

-#if !defined(asprintf) && !defined(_FORTIFY_SOURCE)
-#include <stdarg.h>
-
-int asprintf(char **string_ptr, const char *format, ...)
-{
-	va_list arg;
-	char *str;
-	int size;
-	int rv;
-
-	va_start(arg, format);
-	size = vsnprintf(NULL, 0, format, arg);
-	size++;
-	va_start(arg, format);
-	str = malloc(size);
-	if (str == NULL) {
-		va_end(arg);
-		/*
-		 * Strictly speaking, GNU asprintf doesn't do this,
-		 * but the caller isn't checking the return value.
-		 */
-		fprintf(stderr, "failed to allocate memory\\n");
-		exit(1);
-	}
-	rv = vsnprintf(str, size, format, arg);
-	va_end(arg);
-
-	*string_ptr = str;
-	return (rv);
-}
-
-#endif
-
 #if !defined(strndup)
 char *strndup(const char *s, size_t n)
 {
diff -Nuar a/logrotate.h b/logrotate.h
--- a/logrotate.h	2016-01-20 10:47:36.000000000 +0100
+++ b/logrotate.h	2016-01-25 19:59:39.760044690 +0100
@@ -80,8 +80,5 @@
 extern int debug;
 
 int readAllConfigPaths(const char **paths);
-#if !defined(asprintf) && !defined(_FORTIFY_SOURCE)
-int asprintf(char **string_ptr, const char *format, ...);
-#endif
 
 #endif
