Ticket #55493: telnet_telnet.c.patch

File telnet_telnet.c.patch, 1.4 KB (added by jmroot (Joshua Root), 6 years ago)
  • telnet/telnet.c

    old new gettermname (void) 
    830830 *              Linemode
    831831 */
    832832
     833/* enough to hold a DISPLAY that could theoretically be up to PATH_MAX long */
     834#define TEMPBUFSIZE 1024
     835
    833836static void
    834837suboption (void)
    835838{
    suboption (void) 
    848851      else
    849852        {
    850853          char *name;
    851           unsigned char temp[50];
     854          unsigned char temp[TEMPBUFSIZE];
    852855          int len;
    853856
    854857#if defined TN3270
    suboption (void) 
    859862#endif /* defined(TN3270) */
    860863          name = gettermname ();
    861864          len = strlen (name) + 4 + 2;
    862           if (len < NETROOM ())
     865          if (len < NETROOM () && len < TEMPBUFSIZE-1)
    863866            {
    864867              sprintf ((char *) temp, "%c%c%c%c%s%c%c", IAC, SB, TELOPT_TTYPE,
    865868                       TELQUAL_IS, name, IAC, SE);
    suboption (void) 
    880883      if (SB_GET () == TELQUAL_SEND)
    881884        {
    882885          long ospeed, ispeed;
    883           unsigned char temp[50];
     886          unsigned char temp[TEMPBUFSIZE];
    884887          int len;
    885888
    886889          TerminalSpeeds (&ispeed, &ospeed);
    suboption (void) 
    987990        return;
    988991      if (SB_GET () == TELQUAL_SEND)
    989992        {
    990           unsigned char temp[50], *dp;
     993          unsigned char temp[TEMPBUFSIZE], *dp;
    991994          int len;
    992995
    993           if ((dp = env_getvalue ("DISPLAY")) == NULL)
     996          if ((dp = env_getvalue ("DISPLAY")) == NULL || strlen(dp) >= TEMPBUFSIZE)
    994997            {
    995998              /*
    996999               * Something happened, we no longer have a DISPLAY