diff --git a/tests/libtest/lib558.c b/tests/libtest/lib558.c
index bf4f9149f08b64e06953887dc9bb585a11bab0ac..9dabbb718a97810414ac777f05ba95e6124cc631 100644
--- a/tests/libtest/lib558.c
+++ b/tests/libtest/lib558.c
@@ -26,6 +26,35 @@
 #include "memory.h"
 #include "memdebug.h"
 
+
+static Curl_addrinfo *fake_ai(void)
+{
+  Curl_addrinfo *ai;
+  int ss_size;
+
+  ss_size = sizeof (struct sockaddr_in);
+
+  if((ai = calloc(1, sizeof(Curl_addrinfo))) == NULL)
+    return NULL;
+
+  if((ai->ai_canonname = strdup("dummy")) == NULL) {
+    free(ai);
+    return NULL;
+  }
+
+  if((ai->ai_addr = calloc(1, ss_size)) == NULL) {
+    free(ai->ai_canonname);
+    free(ai);
+    return NULL;
+  }
+
+  ai->ai_family = AF_INET;
+  ai->ai_addrlen = ss_size;
+
+  return ai;
+}
+
+
 int test(char *URL)
 {
   CURL *easyh;
@@ -67,7 +96,7 @@ int test(char *URL)
     return TEST_ERR_MAJOR_BAD;
   }
 
-  data_node->addr = Curl_ip2addr(INADDR_ANY, "dummy", 0);
+  data_node->addr = fake_ai();
   if(!data_node->addr) {
     printf("actual data creation failed\n");
     return TEST_ERR_MAJOR_BAD;