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