From a818f67959c0f6dd23ca37280d5c4f9b9ee07125 Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Fri, 5 Jun 2015 15:30:33 +0100 Subject: [PATCH] Guard routing against a null-deref. Bug 1639 --- src/src/route.c | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/src/src/route.c b/src/src/route.c index cdfa6e6b7..39aed90a3 100644 --- a/src/src/route.c +++ b/src/src/route.c @@ -1920,24 +1920,23 @@ if (unseen && r->next != NULL) /* Unset the address expansions, and return the final result. */ ROUTE_EXIT: -if (yield == DEFER) { - if ( - ((Ustrstr(addr->message, "failed to expand") != NULL) || (Ustrstr(addr->message, "expansion of ") != NULL)) && - ( - Ustrstr(addr->message, "mysql") != NULL || - Ustrstr(addr->message, "pgsql") != NULL || +if ( yield == DEFER + && addr->message + && ( Ustrstr(addr->message, "failed to expand") != NULL + || Ustrstr(addr->message, "expansion of ") != NULL + ) + && ( Ustrstr(addr->message, "mysql") != NULL + || Ustrstr(addr->message, "pgsql") != NULL #ifdef EXPERIMENTAL_REDIS - Ustrstr(addr->message, "redis") != NULL || + || Ustrstr(addr->message, "redis") != NULL #endif - Ustrstr(addr->message, "sqlite") != NULL || - Ustrstr(addr->message, "ldap:") != NULL || - Ustrstr(addr->message, "ldapdn:") != NULL || - Ustrstr(addr->message, "ldapm:") != NULL - ) - ) { - addr->message = string_sprintf("Temporary internal error"); - } -} + || Ustrstr(addr->message, "sqlite") != NULL + || Ustrstr(addr->message, "ldap:") != NULL + || Ustrstr(addr->message, "ldapdn:") != NULL + || Ustrstr(addr->message, "ldapm:") != NULL + ) + ) + addr->message = string_sprintf("Temporary internal error"); deliver_set_expansions(NULL); router_name = NULL; -- 2.30.2