[PATCH v5 01/16] image: Correct strncpy() warning with image_set_name()

Simon Glass sjg at chromium.org
Thu Nov 10 03:14:39 CET 2022


gcc 12 seems to warn on strncpy() as a matter of course. Rewrite the code
a different way to do the same thing, to avoid the warning.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

(no changes since v1)

 include/image.h | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/include/image.h b/include/image.h
index 65d0d4f4387..6f21dafba8c 100644
--- a/include/image.h
+++ b/include/image.h
@@ -853,7 +853,13 @@ image_set_hdr_b(comp)		/* image_set_comp */
 
 static inline void image_set_name(struct legacy_img_hdr *hdr, const char *name)
 {
-	strncpy(image_get_name(hdr), name, IH_NMLEN);
+	/*
+	 * This is equivalent to: strncpy(image_get_name(hdr), name, IH_NMLEN);
+	 *
+	 * Use the tortured code below to avoid a warning with gcc 12. We do not
+	 * want to include a nul terminator if the name is of length IH_NMLEN
+	 */
+	memcpy(image_get_name(hdr), name, strnlen(name, IH_NMLEN));
 }
 
 int image_check_hcrc(const struct legacy_img_hdr *hdr);
-- 
2.38.1.431.g37b22c650d-goog



More information about the U-Boot mailing list