[tip:x86/efi] efivars: Check size of user object

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Commit-ID:  e003bbee2a6a19a4c733335989284caf1b179e0d
Gitweb:     http://git.kernel.org/tip/e003bbee2a6a19a4c733335989284caf1b179e0d
Author:     Matt Fleming <matt.fleming@xxxxxxxxx>
AuthorDate: Mon, 17 Mar 2014 09:17:28 +0000
Committer:  Matt Fleming <matt.fleming@xxxxxxxxx>
CommitDate: Thu, 17 Apr 2014 13:53:34 +0100

efivars: Check size of user object

Unbelieavably there are no checks to see whether the data structure
passed to 'new_var' and 'del_var' is the size that we expect. Let's add
some for better robustness.

Cc: Mike Waychison <mikew@xxxxxxxxxx>
Signed-off-by: Matt Fleming <matt.fleming@xxxxxxxxx>
---
 drivers/firmware/efi/efivars.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/firmware/efi/efivars.c b/drivers/firmware/efi/efivars.c
index 06ec6ee..2c21ccc 100644
--- a/drivers/firmware/efi/efivars.c
+++ b/drivers/firmware/efi/efivars.c
@@ -347,6 +347,9 @@ static ssize_t efivar_create(struct file *filp, struct kobject *kobj,
 	if (!capable(CAP_SYS_ADMIN))
 		return -EACCES;
 
+	if (count != sizeof(*new_var))
+		return -EINVAL;
+
 	attributes = new_var->Attributes;
 	size = new_var->DataSize;
 	data = new_var->Data;
@@ -395,6 +398,9 @@ static ssize_t efivar_delete(struct file *filp, struct kobject *kobj,
 	if (!capable(CAP_SYS_ADMIN))
 		return -EACCES;
 
+	if (count != sizeof(*del_var))
+		return -EINVAL;
+
 	name = del_var->VariableName;
 	vendor = del_var->VendorGuid;
 
--
To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Stable Commits]     [Linux Stable Kernel]     [Linux Kernel]     [Linux USB Devel]     [Linux Video &Media]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux