Use safe_strncpy.
diff --git a/editors/sed.c b/editors/sed.c
index 47fb637..95be018 100644
--- a/editors/sed.c
+++ b/editors/sed.c
@@ -388,9 +388,8 @@
 	/* the first non-whitespace we get is a filename. the filename ends when we
 	 * hit a normal sed command terminator or end of string */
 	filenamelen = strcspn(&filecmdstr[idx], "; \n\r\t\v\0");
-	sed_cmd->filename = xmalloc(sizeof(char) * filenamelen + 1);
-	strncpy(sed_cmd->filename, &filecmdstr[idx], filenamelen);
-	sed_cmd->filename[filenamelen] = 0;
+	sed_cmd->filename = xmalloc(filenamelen + 1);
+	safe_strncpy(sed_cmd->filename, &filecmdstr[idx], filenamelen + 1);
 
 	return idx + filenamelen;
 }
diff --git a/sed.c b/sed.c
index 47fb637..95be018 100644
--- a/sed.c
+++ b/sed.c
@@ -388,9 +388,8 @@
 	/* the first non-whitespace we get is a filename. the filename ends when we
 	 * hit a normal sed command terminator or end of string */
 	filenamelen = strcspn(&filecmdstr[idx], "; \n\r\t\v\0");
-	sed_cmd->filename = xmalloc(sizeof(char) * filenamelen + 1);
-	strncpy(sed_cmd->filename, &filecmdstr[idx], filenamelen);
-	sed_cmd->filename[filenamelen] = 0;
+	sed_cmd->filename = xmalloc(filenamelen + 1);
+	safe_strncpy(sed_cmd->filename, &filecmdstr[idx], filenamelen + 1);
 
 	return idx + filenamelen;
 }