From: Andy Shevchenko Date: Tue, 29 Dec 2015 11:07:50 +0000 (+0200) Subject: device property: avoid allocations of 0 length X-Git-Tag: v4.5-rc1~125^2~14^2 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=f6740c1899d2ee2c4c9ec5301d4b712d4e706a79;p=karo-tx-linux.git device property: avoid allocations of 0 length 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 Signed-off-by: Rafael J. Wysocki --- diff --git a/drivers/base/property.c b/drivers/base/property.c index b3429cc4ee63..c359351d50f1 100644 --- a/drivers/base/property.c +++ b/drivers/base/property.c @@ -653,6 +653,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; @@ -718,6 +721,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 *),