mirror of
https://github.com/sheumann/telnetd.git
synced 2025-03-27 10:29:29 +00:00
Sync with usr.bin/telnet/telnet.c r1.9 - fix buffer overflow in DISPLAY
git-svn-id: http://svn0.us-east.freebsd.org/base/head/contrib/telnet@67827 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
This commit is contained in:
parent
a2af2980e2
commit
2ffcc09501
@ -29,6 +29,8 @@
|
|||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
* 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
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* $FreeBSD$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
@ -970,16 +972,17 @@ suboption()
|
|||||||
unsigned char temp[50], *dp;
|
unsigned char temp[50], *dp;
|
||||||
int len;
|
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
|
* 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);
|
send_wont(TELOPT_XDISPLOC, 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
sprintf((char *)temp, "%c%c%c%c%s%c%c", IAC, SB, TELOPT_XDISPLOC,
|
snprintf((char *)temp, sizeof(temp), "%c%c%c%c%s%c%c", IAC, SB,
|
||||||
TELQUAL_IS, dp, IAC, SE);
|
TELOPT_XDISPLOC, TELQUAL_IS, dp, IAC, SE);
|
||||||
len = strlen((char *)temp+4) + 4; /* temp[3] is 0 ... */
|
len = strlen((char *)temp+4) + 4; /* temp[3] is 0 ... */
|
||||||
|
|
||||||
if (len < NETROOM()) {
|
if (len < NETROOM()) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user