Avoid misaligned access in cached lookup. Bug 1708
authorJeremy Harris <jgh146exb@wizmail.org>
Mon, 2 Nov 2015 19:03:26 +0000 (19:03 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Mon, 2 Nov 2015 19:03:26 +0000 (19:03 +0000)
doc/doc-txt/ChangeLog
src/src/search.c

index 8780780..cea29ee 100644 (file)
@@ -63,9 +63,11 @@ JH/10 Bug 840: fix log_defer_output option of pipe transport
 JH/11 Bug 830: use same host for all RCPTS of a message, even under
       hosts_randomize.  This matters a lot when combined with mua_wrapper.
 
 JH/11 Bug 830: use same host for all RCPTS of a message, even under
       hosts_randomize.  This matters a lot when combined with mua_wrapper.
 
-JH/12 Bug 1706: percent and underbar characters are no longer excaped by the
+JH/12 Bug 1706: percent and underbar characters are no longer escaped by the
       ${quote_pgsql:<string>} operator.
 
       ${quote_pgsql:<string>} operator.
 
+JH/13 Bug 1708: avoid misaligned access in cached lookup.
+
 
 Exim version 4.86
 -----------------
 
 Exim version 4.86
 -----------------
index cd522da..ccad250 100644 (file)
@@ -540,10 +540,10 @@ else
       }
     else
       {
       }
     else
       {
-      t = store_get(sizeof(tree_node) + len + sizeof(expiring_data));
-      e = (expiring_data *)((char *)t + sizeof(tree_node) + len);
+      e = store_get(sizeof(expiring_data) + sizeof(tree_node) + len);
       e->expiry = do_cache == UINT_MAX ? 0 : time(NULL)+do_cache;
       e->ptr = data;
       e->expiry = do_cache == UINT_MAX ? 0 : time(NULL)+do_cache;
       e->ptr = data;
+      t = (tree_node *)(e+1);
       memcpy(t->name, keystring, len);
       t->data.ptr = e;
       tree_insertnode(&c->item_cache, t);
       memcpy(t->name, keystring, len);
       t->data.ptr = e;
       tree_insertnode(&c->item_cache, t);