summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMAY <[email protected]>2025-06-05 01:14:41 +0200
committerMAY <[email protected]>2025-06-05 01:29:14 +0200
commit13e773f3a37e0ee9a545ee7547213cb3ca440db4 (patch)
treeaaaaddf13141f8b9b12d392f6c584b1db61f0d8d
parent9eab296f5790f2fe329b35b5f8891a62e1626f43 (diff)
Add check length for inquiry page code
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_initialize.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_initialize.c b/common/usbx_device_classes/src/ux_device_class_storage_initialize.c
index 0ec29d8..be1bb69 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_initialize.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_initialize.c
@@ -1,10 +1,10 @@
/***************************************************************************
- * Copyright (c) 2024 Microsoft Corporation
- *
+ * Copyright (c) 2024 Microsoft Corporation
+ *
* This program and the accompanying materials are made available under the
* terms of the MIT License which is available at
* https://opensource.org/licenses/MIT.
- *
+ *
* SPDX-License-Identifier: MIT
**************************************************************************/
@@ -290,8 +290,17 @@ UINT i;
storage_parameter = command -> ux_slave_class_command_parameter;
/* Sanity checks. */
- if (storage_parameter -> ux_slave_class_storage_parameter_number_lun > UX_MAX_SLAVE_LUN)
+ if ((storage_parameter -> ux_slave_class_storage_parameter_number_lun > UX_MAX_SLAVE_LUN) ||
+ ((storage_parameter -> ux_slave_class_storage_parameter_vendor_id != UX_NULL) &&
+ ( _ux_utility_string_length_get(storage_parameter -> ux_slave_class_storage_parameter_vendor_id) != 8)) ||
+ ((storage_parameter -> ux_slave_class_storage_parameter_product_id != UX_NULL) &&
+ ( _ux_utility_string_length_get(storage_parameter -> ux_slave_class_storage_parameter_product_id) != 16)) ||
+ ((storage_parameter -> ux_slave_class_storage_parameter_product_rev != UX_NULL) &&
+ ( _ux_utility_string_length_get(storage_parameter -> ux_slave_class_storage_parameter_product_rev) != 4)) ||
+ ((storage_parameter -> ux_slave_class_storage_parameter_product_serial != UX_NULL) &&
+ ( _ux_utility_string_length_get(storage_parameter -> ux_slave_class_storage_parameter_product_serial) != 20)))
return(UX_INVALID_PARAMETER);
+
for (i = 0; i < storage_parameter -> ux_slave_class_storage_parameter_number_lun; i ++)
{
if ((storage_parameter -> ux_slave_class_storage_parameter_lun[i].