Lethal Injection!

From: root (root@grumpy.net-connect.net)
Date: 02/24/95


I have just recently subscribed to the mailing list, so I do not know if the
following "crash bug" has _yet_ been discovered.

Fist start a character (any character) and then self-deleted.
Then attempt to login as that character again and wait.

CASE FAILURE:
   A character flagged deleted that has connected

Now that the mud sees that the char has been DELETED it will prompt them
for the name comfirm in nanny().

"Did I get that right, Dummychar (Y/N)?"

Before input, break your telnet link (i.e ^]q) and watch what happens.
This will cause a crash every time, and without any clues to find this, which
is why I am writing :-)

The SEGV comes from function free_char() that is called after the link has
been broken (comm.c, close_socket).  It is faling here:

    while ((a = GET_ALIASES(ch)) != NULL) {
      GET_ALIASES(ch) = (GET_ALIASES(ch))->next;   <----- CRASH
        free_alias(a);
    }

To prevent this (which I am not saying is to be the "right way") I added
a line before the while statement:

  if (ch->player_specials->aliases->next != NULL)    {  <----- SEAT BELT :-)
    while ((a = GET_ALIASES(ch)) != NULL) {
      GET_ALIASES(ch) = (GET_ALIASES(ch))->next;
      free_alias(a);
    }
  }


I do hope that this helps some people out, for it cause me some headaches :)

Cliff aka Tapo
unknown.net-connect.net 5000



This archive was generated by hypermail 2b30 : 12/07/00 PST