Browse Source

qcacld-3.0: Possible buffer overflow

Fix array index out of bounds issue in function
cds_hang_event_notifier_call.

Change-Id: I19f17e6b53e9be83c63a7aa3c8ac7ed6d0b6e852
CRs-Fixed: 2777774
Paul Zhang 4 years ago
parent
commit
bb3ac230bd
1 changed files with 8 additions and 2 deletions
  1. 8 2
      core/cds/src/cds_api.c

+ 8 - 2
core/cds/src/cds_api.c

@@ -587,11 +587,17 @@ static int cds_hang_event_notifier_call(struct notifier_block *block,
 
 	cmd->recovery_reason = gp_cds_context->recovery_reason;
 
+	/* userspace expects a fixed format */
+	qdf_mem_set(&cmd->driver_version, DRIVER_VER_LEN, ' ');
 	qdf_mem_copy(&cmd->driver_version, QWLAN_VERSIONSTR,
-		     DRIVER_VER_LEN);
+		     qdf_min(sizeof(QWLAN_VERSIONSTR) - 1,
+			     (size_t)DRIVER_VER_LEN));
 
+	/* userspace expects a fixed format */
+	qdf_mem_set(&cmd->hang_event_version, HANG_EVENT_VER_LEN, ' ');
 	qdf_mem_copy(&cmd->hang_event_version, QDF_HANG_EVENT_VERSION,
-		     HANG_EVENT_VER_LEN);
+		     qdf_min(sizeof(QDF_HANG_EVENT_VERSION) - 1,
+			     (size_t)HANG_EVENT_VER_LEN));
 
 	cds_hang_data->offset += total_len;
 	return NOTIFY_OK;