From: Jeremy Harris Date: Mon, 2 Nov 2015 19:03:26 +0000 (+0000) Subject: Avoid misaligned access in cached lookup. Bug 1708 X-Git-Tag: exim-4_87_RC1~61 X-Git-Url: https://vcs.fsf.org/?p=exim.git;a=commitdiff_plain;h=98b98887f926be87eabccc7919e57ce625c63c03;ds=sidebyside Avoid misaligned access in cached lookup. Bug 1708 --- diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog index 8780780c0..cea29eeb3 100644 --- a/doc/doc-txt/ChangeLog +++ b/doc/doc-txt/ChangeLog @@ -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/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:} operator. +JH/13 Bug 1708: avoid misaligned access in cached lookup. + Exim version 4.86 ----------------- diff --git a/src/src/search.c b/src/src/search.c index cd522dae8..ccad25021 100644 --- a/src/src/search.c +++ b/src/src/search.c @@ -540,10 +540,10 @@ 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; + t = (tree_node *)(e+1); memcpy(t->name, keystring, len); t->data.ptr = e; tree_insertnode(&c->item_cache, t);