Change away to be allocated dynamically

This commit is contained in:
Federico G. Schwindt 2013-08-26 22:52:23 +01:00
parent 41f75b6974
commit be2e611680
2 changed files with 9 additions and 3 deletions

View File

@ -221,7 +221,7 @@ Init_New_Client(CONN_ID Idx, CLIENT *Introducer, CLIENT *TopServer,
Generate_MyToken(client);
if (Client_HasMode(client, 'a'))
strlcpy(client->away, DEFAULT_AWAY_MSG, sizeof(client->away));
client->away = strndup(DEFAULT_AWAY_MSG, CLIENT_AWAY_LEN - 1);
client->next = (POINTER *)My_Clients;
My_Clients = client;
@ -500,7 +500,11 @@ Client_SetAway( CLIENT *Client, const char *Txt )
assert( Client != NULL );
assert( Txt != NULL );
strlcpy( Client->away, Txt, sizeof( Client->away ));
if (Client->away)
free(Client->away);
Client->away = strndup(Txt, CLIENT_AWAY_LEN - 1);
LogDebug("%s \"%s\" is away: %s", Client_TypeText(Client),
Client_Mask(Client), Txt);
} /* Client_SetAway */
@ -1441,6 +1445,8 @@ Free_Client(CLIENT **Client)
if ((*Client)->account_name)
free((*Client)->account_name);
if ((*Client)->away)
free((*Client)->away);
if ((*Client)->cloaked)
free((*Client)->cloaked);
if ((*Client)->ipa_text)

View File

@ -58,7 +58,7 @@ typedef struct _CLIENT
char modes[CLIENT_MODE_LEN]; /* client modes */
int hops, token, mytoken; /* "hops" and "Token" (see SERVER command) */
bool oper_by_me; /* client is local IRC operator on this server? */
char away[CLIENT_AWAY_LEN]; /* AWAY text (valid if mode 'a' is set) */
char *away; /* AWAY text (valid if mode 'a' is set) */
char flags[CLIENT_FLAGS_LEN]; /* flags of the client */
char *account_name; /* login account (for services) */
int capabilities; /* enabled IRC capabilities */