summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Harris <jgh146exb@wizmail.org>2015-06-05 15:30:33 +0100
committerJeremy Harris <jgh146exb@wizmail.org>2015-06-05 15:30:33 +0100
commita818f67959c0f6dd23ca37280d5c4f9b9ee07125 (patch)
tree041953634545b2066663ded64884c9fd1ba5b8b7
parente14fcb3badf8936e1e0c210f366b861876089093 (diff)
Guard routing against a null-deref. Bug 1639
-rw-r--r--src/src/route.c31
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;