Diff between 600ad0f6cd857644172e52b76618815005d0010c and 47f6853fa28381b852490823e01305746a49c89d

Changed Files

File Additions Deletions Status
android/avdtp.c +10 -2 modified

Full Patch

diff --git a/android/avdtp.c b/android/avdtp.c
index 2629e67..ed95ad7 100644
--- a/android/avdtp.c
+++ b/android/avdtp.c
@@ -2340,6 +2340,11 @@ static int send_request(struct avdtp *session, gboolean priority,
 {
 	struct pending_req *req;
 
+	if (size > 0 && !buffer) {
+		DBG("Invalid buffer %p", buffer);
+		return -EINVAL;
+	}
+
 	if (stream && stream->abort_int && signal_id != AVDTP_ABORT) {
 		DBG("Unable to send requests while aborting");
 		return -EINVAL;
@@ -2347,11 +2352,14 @@ static int send_request(struct avdtp *session, gboolean priority,
 
 	req = g_new0(struct pending_req, 1);
 	req->signal_id = signal_id;
-	req->data = g_malloc(size);
-	memcpy(req->data, buffer, size);
 	req->data_size = size;
 	req->stream = stream;
 
+	if (size > 0) {
+		req->data = g_malloc(size);
+		memcpy(req->data, buffer, size);
+	}
+
 	return send_req(session, priority, req);
 }