]> git.pld-linux.org Git - packages/exim.git/blob - exim-bug-1639.patch
- rel 4; add checkconfig to init script; fix segfault on some messages in queue
[packages/exim.git] / exim-bug-1639.patch
1 From a818f67959c0f6dd23ca37280d5c4f9b9ee07125 Mon Sep 17 00:00:00 2001
2 From: Jeremy Harris <jgh146exb@wizmail.org>
3 Date: Fri, 5 Jun 2015 15:30:33 +0100
4 Subject: [PATCH] Guard routing against a null-deref.  Bug 1639
5
6 ---
7  src/src/route.c | 31 +++++++++++++++----------------
8  1 file changed, 15 insertions(+), 16 deletions(-)
9
10 diff --git a/src/src/route.c b/src/src/route.c
11 index cdfa6e6..39aed90 100644
12 --- a/src/src/route.c
13 +++ b/src/src/route.c
14 @@ -1920,24 +1920,23 @@ if (unseen && r->next != NULL)
15  /* Unset the address expansions, and return the final result. */
16  
17  ROUTE_EXIT:
18 -if (yield == DEFER) {
19 -  if (
20 -    ((Ustrstr(addr->message, "failed to expand") != NULL) || (Ustrstr(addr->message, "expansion of ") != NULL)) &&
21 -    (
22 -      Ustrstr(addr->message, "mysql") != NULL ||
23 -      Ustrstr(addr->message, "pgsql") != NULL ||
24 +if (  yield == DEFER
25 +   && addr->message
26 +   && (  Ustrstr(addr->message, "failed to expand") != NULL
27 +      || Ustrstr(addr->message, "expansion of ") != NULL
28 +      )
29 +   && (  Ustrstr(addr->message, "mysql") != NULL
30 +      || Ustrstr(addr->message, "pgsql") != NULL
31  #ifdef EXPERIMENTAL_REDIS
32 -      Ustrstr(addr->message, "redis") != NULL ||
33 +      || Ustrstr(addr->message, "redis") != NULL
34  #endif
35 -      Ustrstr(addr->message, "sqlite") != NULL ||
36 -      Ustrstr(addr->message, "ldap:") != NULL ||
37 -      Ustrstr(addr->message, "ldapdn:") != NULL ||
38 -      Ustrstr(addr->message, "ldapm:") != NULL
39 -    )
40 -  ) {
41 -    addr->message = string_sprintf("Temporary internal error");
42 -  }
43 -}
44 +      || Ustrstr(addr->message, "sqlite") != NULL
45 +      || Ustrstr(addr->message, "ldap:") != NULL
46 +      || Ustrstr(addr->message, "ldapdn:") != NULL
47 +      || Ustrstr(addr->message, "ldapm:") != NULL
48 +      )
49 +   )
50 +  addr->message = string_sprintf("Temporary internal error");
51  
52  deliver_set_expansions(NULL);
53  router_name = NULL;
54 -- 
55 1.9.1
56
This page took 0.051245 seconds and 3 git commands to generate.