From: Andy Shevchenko <andriy.shevche...@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.shevche...@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wyso...@intel.com>
(cherry picked from commit f6740c1899d2ee2c4c9ec5301d4b712d4e706a79)
Signed-off-by: Voon, Weifeng <weifeng.v...@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

-- 
_______________________________________________
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto

Reply via email to