diff options
| author | Kris Kennaway <kris@FreeBSD.org> | 2000-10-29 00:10:14 +0000 |
|---|---|---|
| committer | Kris Kennaway <kris@FreeBSD.org> | 2000-10-29 00:10:14 +0000 |
| commit | 579c78c7f6ea4d445b1485b6761430f16dfab56a (patch) | |
| tree | fdde96ca543bfb2d06494d5e331321f600c2086b /contrib | |
| parent | 2661ef38a20bd658d9abcb137cdabacbfa95072a (diff) | |
Notes
Diffstat (limited to 'contrib')
| -rw-r--r-- | contrib/telnet/telnet/telnet.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/contrib/telnet/telnet/telnet.c b/contrib/telnet/telnet/telnet.c index 63fb9d7b4340..36d1d21ebdb4 100644 --- a/contrib/telnet/telnet/telnet.c +++ b/contrib/telnet/telnet/telnet.c @@ -29,6 +29,8 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. + * + * $FreeBSD$ */ #ifndef lint @@ -970,16 +972,17 @@ suboption() unsigned char temp[50], *dp; int len; - if ((dp = env_getvalue((unsigned char *)"DISPLAY")) == NULL) { + if ((dp = env_getvalue((unsigned char *)"DISPLAY")) == NULL || + strlen(dp) > sizeof(temp) - 7) { /* * Something happened, we no longer have a DISPLAY - * variable. So, turn off the option. + * variable. Or it is too long. So, turn off the option. */ send_wont(TELOPT_XDISPLOC, 1); break; } - sprintf((char *)temp, "%c%c%c%c%s%c%c", IAC, SB, TELOPT_XDISPLOC, - TELQUAL_IS, dp, IAC, SE); + snprintf((char *)temp, sizeof(temp), "%c%c%c%c%s%c%c", IAC, SB, + TELOPT_XDISPLOC, TELQUAL_IS, dp, IAC, SE); len = strlen((char *)temp+4) + 4; /* temp[3] is 0 ... */ if (len < NETROOM()) { |
