[PATCH 2/4] bsps/shared/ofw: Use memcpy instead of strncpy

Christian Mauderer oss at c-mauderer.de
Fri Feb 5 21:03:50 UTC 2021


On 05/02/2021 19:22, Gedare Bloom wrote:
> 
> 
> On Fri, Feb 5, 2021 at 10:41 AM G S Niteesh Babu <niteesh.gs at gmail.com 
> <mailto:niteesh.gs at gmail.com>> wrote:
> 
>     Changed rtems_ofw_get_prop to use memcpy instead of strncpy
>     ---
>       bsps/shared/ofw/ofw.c | 10 +++++++++-
>       1 file changed, 9 insertions(+), 1 deletion(-)
> 
>     diff --git a/bsps/shared/ofw/ofw.c b/bsps/shared/ofw/ofw.c
>     index fa94bfbf05..9dec310247 100644
>     --- a/bsps/shared/ofw/ofw.c
>     +++ b/bsps/shared/ofw/ofw.c
>     @@ -198,7 +198,15 @@ ssize_t rtems_ofw_get_prop(
> 
>         if (prop == NULL && strcmp(propname, "name") == 0) {
>           prop = fdt_get_name(fdtp, offset, &len);
>     -    strncpy(buf, prop, bufsize);
>     +
>     +    bufsize = MIN(len, bufsize - 1);
> 
> ok, reserving 1 byte for the \0. It could be worth adding a comment here 
> to that effect

Is the content of that property really _allways_ a string? Isn't it 
possible to read some references or similar with it?

If it is always a string, I might have made a useless suggestion. In 
that case it might is more efficient and readable to just keep the 
strncpy. Depending on the use case, maybe using strlcpy instead of 
strncpy could be a good idea to guarantee the \0 termination.

> 
>     +    memcpy(buf, prop, bufsize);
>     +
>     +    /* Null terminate the buffer */
>     +    *((char *)buf + bufsize) = 0;
> 
> that gets written here. looks fine to me.
> 
>     +
>     +    /* Return the length of the name including the null byte */
>     +    /* This is the behaviour in libBSD ofw_fdt_getprop */
>           return len + 1;
> 
> shouldn't it be bufsize+1? if it got truncated by the MIN?
> 
>         }
> 
>     -- 
>     2.17.1
> 
> 
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
> 


More information about the devel mailing list