Fix for bug 479 - Undefined filter reference in MaxScale.cnf causes a crash

This commit is contained in:
Mark Riddoch
2014-08-22 14:33:14 +01:00
parent 3476558f52
commit c133c6ef4a
2 changed files with 15 additions and 2 deletions

View File

@ -318,6 +318,9 @@ filterApply(FILTER_DEF *filter, SESSION *session, DOWNSTREAM *downstream)
{ {
DOWNSTREAM *me; DOWNSTREAM *me;
if (filter == NULL)
return NULL;
if (filter->obj == NULL) if (filter->obj == NULL)
{ {
/* Filter not yet loaded */ /* Filter not yet loaded */

View File

@ -333,13 +333,15 @@ bool session_free(
{ {
for (i = 0; i < session->n_filters; i++) for (i = 0; i < session->n_filters; i++)
{ {
session->filters[i].filter->obj->closeSession( if (session->filters[i].filter)
session->filters[i].filter->obj->closeSession(
session->filters[i].instance, session->filters[i].instance,
session->filters[i].session); session->filters[i].session);
} }
for (i = 0; i < session->n_filters; i++) for (i = 0; i < session->n_filters; i++)
{ {
session->filters[i].filter->obj->freeSession( if (session->filters[i].filter)
session->filters[i].filter->obj->freeSession(
session->filters[i].instance, session->filters[i].instance,
session->filters[i].session); session->filters[i].session);
} }
@ -653,6 +655,14 @@ int i;
session->n_filters = service->n_filters; session->n_filters = service->n_filters;
for (i = service->n_filters - 1; i >= 0; i--) for (i = service->n_filters - 1; i >= 0; i--)
{ {
if (service->filters[i] == NULL)
{
LOGIF(LE, (skygw_log_write_flush(
LOGFILE_ERROR,
"Service '%s' contians an unresolved filter.\n",
service->name)));
return 0;
}
if ((head = filterApply(service->filters[i], session, if ((head = filterApply(service->filters[i], session,
&session->head)) == NULL) &session->head)) == NULL)
{ {