summaryrefslogtreecommitdiff
path: root/drivers/acpi/acpica/tbfind.c
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2015-08-25 02:28:39 (GMT)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2015-08-25 21:11:31 (GMT)
commit9f41fd8a175ff87ba610fc387a6922b0f49f8e19 (patch)
tree3cb91631143c9e10a9b7e3f22c02e59a0aa72833 /drivers/acpi/acpica/tbfind.c
parent3534969721ba011b8c2bcb5686819852df7aa971 (diff)
downloadlinux-9f41fd8a175ff87ba610fc387a6922b0f49f8e19.tar.xz
ACPICA: Update parameter validation for data_table_region and load_table
ACPICA commit 51ab555e60b4a3de3cc4a846e86d0de255be441a Add additional validation for the table signature and the OEM strings. Eliminates buffer read overrun in data_table_region. ACPICA BZ 1184. Link: https://bugs.acpica.org/show_bug.cgi?id=1184 Link: https://github.com/acpica/acpica/commit/51ab555e Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Lv Zheng <lv.zheng@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/acpi/acpica/tbfind.c')
-rw-r--r--drivers/acpi/acpica/tbfind.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/acpi/acpica/tbfind.c b/drivers/acpi/acpica/tbfind.c
index 119c84a..405529d 100644
--- a/drivers/acpi/acpica/tbfind.c
+++ b/drivers/acpi/acpica/tbfind.c
@@ -68,12 +68,25 @@ acpi_status
acpi_tb_find_table(char *signature,
char *oem_id, char *oem_table_id, u32 *table_index)
{
- u32 i;
acpi_status status;
struct acpi_table_header header;
+ u32 i;
ACPI_FUNCTION_TRACE(tb_find_table);
+ /* Validate the input table signature */
+
+ if (!acpi_is_valid_signature(signature)) {
+ return_ACPI_STATUS(AE_BAD_SIGNATURE);
+ }
+
+ /* Don't allow the OEM strings to be too long */
+
+ if ((strlen(oem_id) > ACPI_OEM_ID_SIZE) ||
+ (strlen(oem_table_id) > ACPI_OEM_TABLE_ID_SIZE)) {
+ return_ACPI_STATUS(AE_AML_STRING_LIMIT);
+ }
+
/* Normalize the input strings */
memset(&header, 0, sizeof(struct acpi_table_header));