Index: uspace/srv/net/udp/sock.c
===================================================================
--- uspace/srv/net/udp/sock.c	(revision 02a09ed9ab72cd7eb2ca3f11873db078ab906acc)
+++ uspace/srv/net/udp/sock.c	(revision c762ad5ddae5ea40a56aa04d066fc4ac1787344c)
@@ -265,4 +265,10 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_sock_send()");
 	
+	uint8_t *buffer = calloc(UDP_FRAGMENT_SIZE, 1);
+	if (buffer == NULL) {
+		async_answer_0(callid, ENOMEM);
+		return;
+	}
+	
 	struct sockaddr_in6 *addr6 = NULL;
 	struct sockaddr_in *addr;
@@ -276,5 +282,5 @@
 		if (rc != EOK) {
 			async_answer_0(callid, rc);
-			return;
+			goto out;
 		}
 		
@@ -357,5 +363,5 @@
 			log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_sock_sendto: Failed to "
 			    "determine local address.");
-			return;
+			goto out;
 		}
 		
@@ -379,5 +385,4 @@
 			length = UDP_FRAGMENT_SIZE;
 		
-		uint8_t buffer[UDP_FRAGMENT_SIZE];
 		int rc = async_data_write_finalize(wcallid, buffer, length);
 		if (rc != EOK) {
@@ -425,4 +430,6 @@
 	if (addr6 != NULL)
 		free(addr6);
+	
+	free(buffer);
 }
 
