dovecot-2.0: lib-settings: Do proper alignment for dynamically a...

dovecot at dovecot.org dovecot at dovecot.org
Fri Jul 16 17:08:49 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/ba76cf7467c4
changeset: 11841:ba76cf7467c4
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Jul 16 15:08:46 2010 +0100
description:
lib-settings: Do proper alignment for dynamically added structs.
Fixes a crash with some CPUs.

diffstat:

 src/lib-settings/settings-parser.c |  6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diffs (30 lines):

diff -r 38fcf81cc9e0 -r ba76cf7467c4 src/lib-settings/settings-parser.c
--- a/src/lib-settings/settings-parser.c	Fri Jul 16 13:57:41 2010 +0100
+++ b/src/lib-settings/settings-parser.c	Fri Jul 16 15:08:46 2010 +0100
@@ -1464,7 +1464,7 @@
 	/* add existing defines */
 	for (j = 0; parent->defines[j].key != NULL; j++)
 		array_append(&defines, &parent->defines[j], 1);
-	new_struct_size = parent->struct_size;
+	new_struct_size = MEM_ALIGN(parent->struct_size);
 
 	/* add new dynamic defines */
 	for (i = 0; parsers[i].name != NULL; i++) {
@@ -1486,7 +1486,7 @@
 	/* update defaults */
 	parent_defaults = p_malloc(pool, new_struct_size);
 	memcpy(parent_defaults, parent->defaults, parent->struct_size);
-	offset = parent->struct_size;
+	offset = MEM_ALIGN(parent->struct_size);
 	for (i = 0; parsers[i].name != NULL; i++) {
 		memcpy(PTR_OFFSET(parent_defaults, offset),
 		       parsers[i].info->defaults, parsers[i].info->struct_size);
@@ -1502,7 +1502,7 @@
 				     &parent->dynamic_parsers[i], 1);
 		}
 	}
-	offset = parent->struct_size;
+	offset = MEM_ALIGN(parent->struct_size);
 	for (i = 0; parsers[i].name != NULL; i++) {
 		new_parser = parsers[i];
 		new_parser.name = p_strdup(pool, new_parser.name);


More information about the dovecot-cvs mailing list