[linux-yocto] [PATCH 12/12] device property: avoid allocations of 0 length
weifeng.voon at intel.com
weifeng.voon at intel.com
Tue Mar 22 02:21:28 PDT 2016
From: Andy Shevchenko <andriy.shevchenko at linux.intel.com>
Arrays can not have zero elements by definition of the unified device
properties. If such property comes from outside we should not allow it to pass.
Otherwise memory allocation on 0 length will return non-NULL value, which we
currently don't check.
Prevent memory allocations of 0 length.
Signed-off-by: Andy Shevchenko <andriy.shevchenko at linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki at intel.com>
(cherry picked from commit f6740c1899d2ee2c4c9ec5301d4b712d4e706a79)
Signed-off-by: Voon, Weifeng <weifeng.voon at intel.com>
---
drivers/base/property.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/base/property.c b/drivers/base/property.c
index c478cf0..6b98c80 100644
--- a/drivers/base/property.c
+++ b/drivers/base/property.c
@@ -650,6 +650,9 @@ int fwnode_property_match_string(struct fwnode_handle *fwnode,
if (nval < 0)
return nval;
+ if (nval == 0)
+ return -ENODATA;
+
values = kcalloc(nval, sizeof(*values), GFP_KERNEL);
if (!values)
return -ENOMEM;
@@ -715,6 +718,9 @@ static int pset_copy_entry(struct property_entry *dst,
return -ENOMEM;
if (src->is_array) {
+ if (!src->length)
+ return -ENODATA;
+
if (src->is_string) {
nval = src->length / sizeof(const char *);
dst->pointer.str = kcalloc(nval, sizeof(const char *),
--
1.9.1
More information about the linux-yocto
mailing list