diff --git a/servers/slapd/sl_malloc.c b/servers/slapd/sl_malloc.c
index 79317158174d4e5ccdccc9c6049ad9d514564376..d065c57ec9166a3cb99da6699810de0eb4136513 100644
--- a/servers/slapd/sl_malloc.c
+++ b/servers/slapd/sl_malloc.c
@@ -376,6 +376,10 @@ slap_sl_realloc(void *ptr, ber_len_t size, void *ctx)
 	}
 
 	if (sh->sh_stack) {
+		/* round up to doubleword boundary */
+		size += pad + sizeof( ber_len_t );
+		size &= ~pad;
+
 		/* Never shrink blocks */
 		if (size <= p[-1]) {
 			new = p;