Reserve two bytes at the end of the DDB input line in db_readline() to

hold the newline and nul terminator.  Otherwise, there are cases where
garbage may end up in the command history due to a lack of a nul
terminator, or input may end up without room for a newline.

MFC after:	3 days
PR:		119079
Submitted by:	Michael Plass <mfp49_freebsd@plass-family.net>
This commit is contained in:
Robert Watson 2008-03-07 13:13:17 +00:00
parent 02f27f1cfa
commit 233f8184ec
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=176895

View File

@ -302,6 +302,9 @@ db_readline(lstart, lsize)
char * lstart;
int lsize;
{
if (lsize < 2)
return (0);
if (lsize != db_lhistlsize) {
/*
* (Re)initialize input line history. Throw away any
@ -316,7 +319,7 @@ db_readline(lstart, lsize)
db_force_whitespace(); /* synch output position */
db_lbuf_start = lstart;
db_lbuf_end = lstart + lsize;
db_lbuf_end = lstart + lsize - 2; /* Will append NL and NUL. */
db_lc = lstart;
db_le = lstart;