On 05/02/2021 19:22, Gedare Bloom wrote:


On Fri, Feb 5, 2021 at 10:41 AM G S Niteesh Babu <niteesh...@gmail.com <mailto:niteesh...@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@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to