<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Mar 14, 2019 at 9:22 AM Joel Sherrill <<a href="mailto:joel@rtems.org">joel@rtems.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">---<br>
 cpukit/libmisc/shell/main_edit.c | 9 +++++----<br>
 1 file changed, 5 insertions(+), 4 deletions(-)<br>
<br>
diff --git a/cpukit/libmisc/shell/main_edit.c b/cpukit/libmisc/shell/main_edit.c<br>
index 079e9ff..e43ff68 100644<br>
--- a/cpukit/libmisc/shell/main_edit.c<br>
+++ b/cpukit/libmisc/shell/main_edit.c<br>
@@ -286,7 +286,7 @@ static struct editor *find_editor(struct env *env, char *filename) {<br>
   struct editor *ed = env->current;<br>
   struct editor *start = ed;<br>
<br>
-  if (!realpath(filename, fn)) strcpy(fn, filename);<br>
+  if (!realpath(filename, fn)) strncpy(fn, filename, FILENAME_MAX);<br>
<br>
   do {<br>
     if (strcmp(fn, ed->filename) == 0) return ed;<br>
@@ -297,7 +297,7 @@ static struct editor *find_editor(struct env *env, char *filename) {<br>
<br>
 static int new_file(struct editor *ed, char *filename) {<br>
   if (*filename) {<br>
-    strcpy(ed->filename, filename);<br>
+    strncpy(ed->filename, filename, FILENAME_MAX);<br></blockquote><div><br></div><div>if strlen(filename) > FILENAME_MAX, ed->filename will not be NUL-terminated.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
   } else {<br>
     sprintf(ed->filename, "Untitled-%d", ++ed->env->untitled);<br>
     ed->newfile = 1;<br></blockquote><div><br></div><div>Unrelated: why doesn't 'ed->newfile = 1;' happen down the other code path (when a filename is given)?</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
@@ -1752,7 +1752,7 @@ static void read_from_stdin(struct editor *ed) {<br>
     insert(ed, pos, (unsigned char*) buffer, n);<br>
     pos += n;<br>
   }<br>
-  strcpy(ed->filename, "<stdin>");<br>
+  strncpy(ed->filename, "<stdin>", FILENAME_MAX);<br></blockquote><div><br></div><div>overkill -- "<stdin>" has a fixed known size.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
   ed->newfile = 1;<br>
   ed->dirty = 0;<br>
 }<br>
@@ -1775,7 +1775,8 @@ static void save_editor(struct editor *ed) {<br>
         return;<br>
       }<br>
     }<br>
-    strcpy(ed->filename, (const char*) ed->env->linebuf);<br>
+    strncpy(<br>
+      ed->filename, (const char*) ed->env->linebuf, FILENAME_MAX);<br>
     ed->newfile = 0;<br>
   }<br>
<br>
-- <br>
1.8.3.1<br>
<br>
_______________________________________________<br>
devel mailing list<br>
<a href="mailto:devel@rtems.org" target="_blank">devel@rtems.org</a><br>
<a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.rtems.org/mailman/listinfo/devel</a><br>
</blockquote></div></div>