> On Tue, Apr 7, 2015 at 5:11 AM, Shengzhou Liu
> <[email protected]> wrote:
> > In of_property_read_string function, strnlen(prop->value,
> > prop->length) is always less or equal to prop->length, and we should
> allow the '=='
> > condition, so let's remove the original unreasonable condition.
> 
> I believe we don't want to allow equal because prop->length should
> include the \0 termination while strnlen will not.
> 
> Rob

Yes, I thought so, ideally prop->length should be assigned with 
strlen(value)+1, 
but unfortunately in u-boot and kernel there are too many callers that have 
prop->length assigned 
with strlen(value) instead of strlen(value)+1, in practice, we can allow equal. 

For example, in of_property_read_string_helper function, following two lines 
had been removed by commit 6faa2909871d8937.
-       if (strnlen(prop->value, prop->length) >= prop->length)
-               return -EILSEQ;

So allowing equal should be acceptable, because in this function, the equal 
can't prevent stack overflow issue. 

Reply via email to