diff options
author | Jeremy Harris <jgh146exb@wizmail.org> | 2015-06-05 15:30:33 +0100 |
---|---|---|
committer | Jeremy Harris <jgh146exb@wizmail.org> | 2015-06-05 15:30:33 +0100 |
commit | a818f67959c0f6dd23ca37280d5c4f9b9ee07125 (patch) | |
tree | 041953634545b2066663ded64884c9fd1ba5b8b7 | |
parent | e14fcb3badf8936e1e0c210f366b861876089093 (diff) |
Guard routing against a null-deref. Bug 1639
-rw-r--r-- | src/src/route.c | 31 |
1 files 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; |