Bug 160 - fixed memory leaks with telnetd and debug CLI

This commit is contained in:
Mark Riddoch 2013-09-26 17:38:35 +02:00
parent 1e83308cd1
commit ee7b799bf1
3 changed files with 16 additions and 2 deletions

View File

@ -179,6 +179,7 @@ GWBUF *
gwbuf_consume(GWBUF *head, unsigned int length)
{
GWBUF *rval = head;
CHK_GWBUF(head);
GWBUF_CONSUME(head, length);
if (GWBUF_EMPTY(head))

View File

@ -167,7 +167,7 @@ char *password, *t;
telnetd->state = TELNETD_STATE_PASSWD;
dcb_printf(dcb, "Password: ");
telnetd_echo(dcb, 0);
GWBUF_CONSUME(head, GWBUF_LENGTH(head));
gwbuf_consume(head, GWBUF_LENGTH(head));
break;
case TELNETD_STATE_PASSWD:
password = strndup(GWBUF_DATA(head), GWBUF_LENGTH(head));
@ -186,8 +186,9 @@ char *password, *t;
dcb_printf(dcb, "\n\rLogin incorrect\n\rLogin: ");
telnetd_echo(dcb, 1);
telnetd->state = TELNETD_STATE_LOGIN;
free(telnetd->username);
}
GWBUF_CONSUME(head, GWBUF_LENGTH(head));
gwbuf_consume(head, GWBUF_LENGTH(head));
free(password);
break;
case TELNETD_STATE_DATA:
@ -195,6 +196,11 @@ char *password, *t;
break;
}
}
else
{
// Force the free of the buffer header
gwbuf_consume(head, 0);
}
}
}
return n;

View File

@ -208,10 +208,17 @@ CLI_SESSION *session = (CLI_SESSION *)router_session;
*/
}
/**
* Free a debugcli session
*
* @param router_instance The router session
* @param router_client_session The router session as returned from newSession
*/
static void freeSession(
ROUTER* router_instance,
void* router_client_session)
{
free(router_client_session);
return;
}