idevice: Remove unnecessary memcpy from internal_ssl_read()
diff --git a/src/idevice.c b/src/idevice.c
index a2a4d0b..e67a649 100644
--- a/src/idevice.c
+++ b/src/idevice.c
@@ -811,24 +811,19 @@
  */
 static ssize_t internal_ssl_read(idevice_connection_t connection, char *buffer, size_t length)
 {
-	int bytes = 0, pos_start_fill = 0;
-	size_t tbytes = 0;
-	int this_len = length;
+	uint32_t bytes = 0;
+	uint32_t pos = 0;
 	idevice_error_t res;
-	char *recv_buffer;
-
-	debug_info("pre-read client wants %zi bytes", length);
-
-	recv_buffer = (char *)malloc(sizeof(char) * this_len);
-
 	unsigned int timeout = connection->ssl_recv_timeout;
 
+	debug_info("pre-read length = %zi bytes", length);
+
 	/* repeat until we have the full data or an error occurs */
 	do {
 		if (timeout == (unsigned int)-1) {
-			res = internal_connection_receive(connection, recv_buffer, this_len, (uint32_t*)&bytes);
+			res = internal_connection_receive(connection, buffer + pos, (uint32_t)length - pos, &bytes);
 		} else {
-			res = internal_connection_receive_timeout(connection, recv_buffer, this_len, (uint32_t*)&bytes, (unsigned int)timeout);
+			res = internal_connection_receive_timeout(connection, buffer + pos, (uint32_t)length - pos, &bytes, (unsigned int)timeout);
 		}
 		if (res != IDEVICE_E_SUCCESS) {
 			if (res != IDEVICE_E_TIMEOUT) {
@@ -837,27 +832,18 @@
 			connection->status = res;
 			return -1;
 		}
-		debug_info("post-read we got %i bytes", bytes);
+		debug_info("read %i bytes", bytes);
 
 		/* increase read count */
-		tbytes += bytes;
-
-		/* fill the buffer with what we got right now */
-		memcpy(buffer + pos_start_fill, recv_buffer, bytes);
-		pos_start_fill += bytes;
-
-		if (tbytes >= length) {
-			break;
+		pos += bytes;
+		if (pos < (uint32_t)length) {
+			debug_info("re-read trying to read missing %i bytes", (uint32_t)length - pos);
 		}
+	} while (pos < (uint32_t)length);
 
-		this_len = length - tbytes;
-		debug_info("re-read trying to read missing %i bytes", this_len);
-	} while (tbytes < length);
+	debug_info("post-read received %i bytes", bytes);
 
-	if (recv_buffer) {
-		free(recv_buffer);
-	}
-	return tbytes;
+	return pos;
 }
 
 /**
@@ -867,7 +853,7 @@
 {
 	uint32_t bytes = 0;
 	idevice_error_t res;
-	debug_info("pre-send length = %zi", length);
+	debug_info("pre-send length = %zi bytes", length);
 	if ((res = internal_connection_send(connection, buffer, length, &bytes)) != IDEVICE_E_SUCCESS) {
 		debug_info("ERROR: internal_connection_send returned %d", res);
 		connection->status = res;
@@ -1220,7 +1206,7 @@
 				if ((ssl_error = SSL_get_error(connection->ssl_data->session, 0)) == SSL_ERROR_NONE) {
 					SSL_shutdown(connection->ssl_data->session);
 				} else  {
-					debug_info("Skipping bidirectional SSL shutdown. SSL error code: %i\n", ssl_error);
+					debug_info("Skipping bidirectional SSL shutdown. SSL error code: %i", ssl_error);
 				}
 			}
 		}