diff --git a/tools/firmware-utils/src/imagetag.c b/tools/firmware-utils/src/imagetag.c
index 1fb45e9e9598673b6fab56745840ecdd77ae68fa..0ecbada2844c087b5cdee565c07e597fc67da594 100644
--- a/tools/firmware-utils/src/imagetag.c
+++ b/tools/firmware-utils/src/imagetag.c
@@ -32,9 +32,9 @@ union int2char {
   char output[4];
 };
 
-/* This appears to be necessary due to alignment issues */
+/* Convert uint32_t CRC to bigendian and copy it into a character array */
 #define int2tag(tag, value)  intchar.input = htonl(value);	\
-	  strncpy(tag, intchar.output, sizeof(union int2char))
+	  memcpy(tag, intchar.output, sizeof(union int2char))
 
 /* Kernel header */
 struct kernelhdr {