proc color problem

From: Emil Nilimaa (eminil-7@student.luth.se)
Date: 07/21/00


Ok, im using the easy color stuff, with
&r type of color codes.

The problem arise when im trying to send lots of
colors to the player.
It is about 10*10 chars, each with the
color &b&v &n. (or less)

This makes the game crash,
but ONLY for players with a slow connection.
The crash occurs when the player spams the command.

Heres the proc_color function:
/****************************************/
void proc_color(char *inbuf, int colour)
{
  register int j = 0, p = 0;
  int k, max, c = 0;
  char out_buf[98298];

  if (inbuf[0] == '\0')
    return;

  while (inbuf[j] != '\0') {
    if ((inbuf[j]=='\\') && (inbuf[j+1]=='c')
        && isnum(inbuf[j + 2]) && isnum(inbuf[j + 3])) {
      c = (inbuf[j + 2] - '0')*10 + inbuf[j + 3]-'0';
      j += 4;
    }
    else if ((inbuf[j] == '&') && !(is_colour(inbuf[j +
1]) == -1)) {
      c = is_colour(inbuf[j + 1]);
      j += 2;
    }
    else {
      out_buf[p] = inbuf[j];
      j++;
      p++;
      continue;
    }
    if (c > MAX_COLORS)
      c = 0;
    max = strlen(COLOURLIST[c]);
    if (colour || max == 1)
      for (k = 0; k < max; k++) {
        out_buf[p] = COLOURLIST[c][k];
        p++;
      }
  }

  out_buf[p] = '\0';

  strcpy(inbuf, out_buf);
}

and here is the gdb output:
/*****************************************/
#0  strcpy (
    dest=0xbfffc5cc "\r\n\n\r     \e[0;34m\e[7m
\e[0;0m\e[0;34m\e[7m \e[0;0m\e[0;34m\e[7m
\e[0;0m\e[0;34m\e[7m \e[0;0m\e[0;34m\e[7m
\e[0;0m\e[0;34m\e[7m \e[0;0m\e[0;34m\e[7m
\e[0;0m\e[0;34m\e[7m \e[0;0m\e[0;34m\e[7m
\e[0;0m\e[0;34m\e[7m \e[0;0m\e[0;34m\e[7m"...,
    src=0xbffe45b0 "\r\n\n\r     \e[0;34m\e[7m
\e[0;0m\e[0;34m\e[7m \e[0;0m\e[0;34m\e[7m
\e[0;0m\e[0;34m\e[7m \e[0;0m\e[0;34m\e[7m
\e[0;0m\e[0;34m\e[7m \e[0;0m\e[0;34m\e[7m
\e[0;0m\e[0;34m\e[7m \e[0;0m\e[0;34m\e[7m
\e[0;0m\e[0;34m\e[7m \e[0;0m\e[0;34m\e[7m"...) at
../sysdeps/generic/strcpy.c:38
#1  0x809025d in proc_color (
    inbuf=0xbfffc5cc "\r\n\n\r     \e[0;34m\e[7m
\e[0;0m\e[0;34m\e[7m \e[0;0m\e[0;34m\e[7m
\e[0;0m\e[0;34m\e[7m \e[0;0m\e[0;34m\e[7m
\e[0;0m\e[0;34m\e[7m \e[0;0m\e[0;34m\e[7m
\e[0;0m\e[0;34m\e[7m \e[0;0m\e[0;34m\e[7m
\e[0;0m\e[0;34m\e[7m \e[0;0m\e[0;34m\e[7m"..., colour=1)
at color.c:167
#2  0x808c80f in process_output (t=0x375b1b6d) at
comm.c:1377
#3  0x34333b30 in ?? ()
Cannot access memory at address 0x5b1b2020
(gdb)
/****************************************************/


Any info would be appreciated.

/**********************************/
/* Emil Nilimaa                   */
/* zeudes                         */
/* www.sharune.com                */
/**********************************/


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     |  http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html  |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 04/10/01 PDT