Index: uspace/srv/clip/clip.c
===================================================================
--- uspace/srv/clip/clip.c	(revision 8aa42e3d6f89036f973969bb9bdefc8174338963)
+++ uspace/srv/clip/clip.c	(revision 531695f6c403efc3d028936cfd0b5d4514838f1e)
@@ -46,5 +46,6 @@
 static void clip_put_data(ipc_callid_t rid, ipc_call_t *request)
 {
-	ipc_callid_t callid;
+	char *data;
+	int rc;
 	size_t size;
 	
@@ -64,21 +65,7 @@
 		break;
 	case CLIPBOARD_TAG_BLOB:
-		if (!async_data_write_receive(&callid, &size)) {
-			ipc_answer_0(callid, EINVAL);
-			ipc_answer_0(rid, EINVAL);
-			break;
-		}
-		
-		char *data = malloc(size);
-		if (!data) {
-			ipc_answer_0(callid, ENOMEM);
-			ipc_answer_0(rid, ENOMEM);
-			break;
-		}
-		
-		ipcarg_t retval = async_data_write_finalize(callid, data, size);
-		if (retval != EOK) {
-			ipc_answer_0(rid, retval);
-			free(data);
+		rc = async_data_blob_receive(&data, 0, &size);
+		if (rc != EOK) {
+			ipc_answer_0(rid, rc);
 			break;
 		}
