Index: /trunk/src/VBox/Devices/Network/slirp/slirp.c
===================================================================
--- /trunk/src/VBox/Devices/Network/slirp/slirp.c	(revision 38100)
+++ /trunk/src/VBox/Devices/Network/slirp/slirp.c	(revision 38101)
@@ -588,11 +588,12 @@
     int fNATfailed = 0;
     int rc;
-    PNATState pData = RTMemAllocZ(RT_ALIGN_Z(sizeof(NATState), sizeof(uint64_t)));
+    PNATState pData;
+    if (u32Netmask & 0x1f)
+        /* CTL is x.x.x.15, bootp passes up to 16 IPs (15..31) */
+        return VERR_INVALID_PARAMETER;
+    pData = RTMemAllocZ(RT_ALIGN_Z(sizeof(NATState), sizeof(uint64_t)));
     *ppData = pData;
     if (!pData)
         return VERR_NO_MEMORY;
-    if (u32Netmask & 0x1f)
-        /* CTL is x.x.x.15, bootp passes up to 16 IPs (15..31) */
-        return VERR_INVALID_PARAMETER;
     pData->fPassDomain = !fUseHostResolver ? fPassDomain : false;
     pData->fUseHostResolver = fUseHostResolver;
@@ -623,8 +624,10 @@
 
     rc = bootp_dhcp_init(pData);
-    if (rc != 0)
-    {
-        Log(("NAT: DHCP server initialization was failed\n"));
-        return VINF_NAT_DNS;
+    if (RT_FAILURE(rc))
+    {
+        Log(("NAT: DHCP server initialization failed\n"));
+        RTMemFree(pData);
+        *ppData = NULL;
+        return rc;
     }
     debug_init();
