Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 62337538 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "diag: Prevent out of bound write while sending dci pkt to remote"

parents a972102b aaa4dd32
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -1739,7 +1739,16 @@ static int diag_send_dci_pkt_remote(unsigned char *data, int len, int tag,
	write_len += dci_header_size;
	*(int *)(buf + write_len) = tag;
	write_len += sizeof(int);
	if ((write_len + len) < DIAG_MDM_BUF_SIZE) {
		memcpy(buf + write_len, data, len);
	} else {
		pr_err("diag: skip writing invalid length packet, token: %d, pkt_len: %d\n",
			token, (write_len + len));
		spin_lock_irqsave(&driver->dci_mempool_lock, flags);
		diagmem_free(driver, buf, dci_ops_tbl[token].mempool);
		spin_unlock_irqrestore(&driver->dci_mempool_lock, flags);
		return -EAGAIN;
	}
	write_len += len;
	*(buf + write_len) = CONTROL_CHAR; /* End Terminator */
	write_len += sizeof(uint8_t);