cli: Terminate the string in cread_line_process_ch()

Rather than relying on the caller, terminate the string inside this
function. Do this each time we return, whether input is finished or
not. It is not needed when the input is aborted, since the string will
be discarded in that case.

Signed-off-by: Simon Glass <sjg@chromium.org>
diff --git a/common/cli_readline.c b/common/cli_readline.c
index 62d419b..fdb84d9 100644
--- a/common/cli_readline.c
+++ b/common/cli_readline.c
@@ -263,6 +263,7 @@
 
 	if (ichar == '\n') {
 		putc('\n');
+		buf[cls->eol_num] = '\0';	/* terminate the string */
 		return 0;
 	}
 
@@ -413,6 +414,12 @@
 		break;
 	}
 
+	/*
+	 * keep the string terminated...if we added a char at the end then we
+	 * want a \0 after it
+	 */
+	buf[cls->eol_num] = '\0';
+
 	return -EAGAIN;
 }
 
@@ -467,7 +474,6 @@
 			break;
 	}
 	*len = cls->eol_num;
-	buf[cls->eol_num] = '\0';	/* lose the newline */
 
 	if (buf[0] && buf[0] != CREAD_HIST_CHAR)
 		cread_add_to_hist(buf);