Index: uspace/srv/net/tcp/sock.c
===================================================================
--- uspace/srv/net/tcp/sock.c	(revision a940f1dcf5626a006fa01e20dc0acc32434f7b83)
+++ uspace/srv/net/tcp/sock.c	(revision f4a27304e844833aa9099ff8d5c0dc1dacb26f19)
@@ -613,7 +613,12 @@
 	ipc_callid_t wcallid;
 	size_t length;
-	uint8_t buffer[TCP_SOCK_FRAGMENT_SIZE];
 	tcp_error_t trc;
 	int rc;
+	
+	uint8_t *buffer = calloc(TCP_SOCK_FRAGMENT_SIZE, 1);
+	if (buffer == NULL) {
+		async_answer_0(callid, ENOMEM);
+		return;
+	}
 
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_send()");
@@ -625,5 +630,5 @@
 	if (sock_core == NULL) {
 		async_answer_0(callid, ENOTSOCK);
-		return;
+		goto out;
 	}
 
@@ -641,5 +646,5 @@
 			fibril_mutex_unlock(&socket->lock);
 			async_answer_0(callid, EINVAL);
-			return;
+			goto out;
 		}
 
@@ -651,5 +656,5 @@
 			fibril_mutex_unlock(&socket->lock);
 			async_answer_0(callid, rc);
-			return;
+			goto out;
 		}
 
@@ -676,5 +681,5 @@
 			fibril_mutex_unlock(&socket->lock);
 			async_answer_0(callid, rc);
-			return;
+			goto out;
 		}
 	}
@@ -685,4 +690,7 @@
 	    IPC_GET_ARG2(answer));
 	fibril_mutex_unlock(&socket->lock);
+	
+out:
+	free(buffer);
 }
 
Index: uspace/srv/net/udp/sock.c
===================================================================
--- uspace/srv/net/udp/sock.c	(revision a940f1dcf5626a006fa01e20dc0acc32434f7b83)
+++ uspace/srv/net/udp/sock.c	(revision f4a27304e844833aa9099ff8d5c0dc1dacb26f19)
@@ -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);
 }
 
