[dovecot-cvs] dovecot/src/lib-mail message-address.c,1.7,1.8 message-body-search.c,1.13,1.14 message-header-decode.c,1.4,1.5

cras at procontrol.fi cras at procontrol.fi
Sun Sep 21 20:21:39 EEST 2003


Update of /home/cvs/dovecot/src/lib-mail
In directory danu:/tmp/cvs-serv17131/lib-mail

Modified Files:
	message-address.c message-body-search.c 
	message-header-decode.c 
Log Message:
data_stack_pool split into two: unsafe_data_stack_pool which works like
before, and a new one which verifies that stack frame stays the same
whenever the pool is accessed.



Index: message-address.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-mail/message-address.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- message-address.c	9 Sep 2003 18:52:39 -0000	1.7
+++ message-address.c	21 Sep 2003 16:21:37 -0000	1.8
@@ -66,7 +66,7 @@
 	message_tokenize_skip_comments(tok, FALSE);
         message_tokenize_dot_token(tok, FALSE);
 
-	if (pool != data_stack_pool)
+	if (!pool->datastack_pool)
 		t_push();
 	mailbox = t_str_new(128);
 	domain = t_str_new(256);
@@ -213,7 +213,7 @@
 	if (ingroup)
 		(void)new_address(pool, &next_addr);
 
-	if (pool != data_stack_pool)
+	if (!pool->datastack_pool)
 		t_pop();
 	message_tokenize_deinit(tok);
 

Index: message-body-search.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-mail/message-body-search.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- message-body-search.c	8 May 2003 02:29:13 -0000	1.13
+++ message-body-search.c	21 Sep 2003 16:21:37 -0000	1.14
@@ -107,7 +107,7 @@
 	struct message_header_line *hdr;
 	int found = FALSE;
 
-	hdr_search_ctx = message_header_search_init(data_stack_pool,
+	hdr_search_ctx = message_header_search_init(pool_datastack_create(),
 						    ctx->body_ctx->key,
 						    ctx->body_ctx->charset,
 						    NULL);
@@ -214,7 +214,8 @@
         enum charset_result result;
 	size_t block_pos, inbuf_size, inbuf_left, ret;
 
-	outbuf = buffer_create_static(data_stack_pool, DECODE_BLOCK_SIZE);
+	outbuf = buffer_create_static(pool_datastack_create(),
+				      DECODE_BLOCK_SIZE);
 	for (block_pos = 0; block_pos < buffer_get_used_size(block); ) {
 		if (buffer_get_used_size(ctx->decode_buf) == 0) {
 			/* we can use the buffer directly without copying */
@@ -272,6 +273,7 @@
 {
 	const unsigned char *data;
 	buffer_t *decodebuf;
+	pool_t pool;
 	size_t data_size, pos;
 	uoff_t old_limit;
 	ssize_t ret;
@@ -292,8 +294,8 @@
 	if (ctx->translation == NULL)
 		ctx->translation = charset_to_utf8_begin("ascii", NULL);
 
-	ctx->decode_buf = buffer_create_static(data_stack_pool, 256);
-	ctx->match_buf = buffer_create_static_hard(data_stack_pool,
+	ctx->decode_buf = buffer_create_static(pool_datastack_create(), 256);
+	ctx->match_buf = buffer_create_static_hard(pool_datastack_create(),
 						   sizeof(size_t) *
 						   ctx->body_ctx->key_len);
 
@@ -312,15 +314,14 @@
 		pos = data_size;
 
 		t_push();
+		pool = pool_datastack_create();
 		if (ctx->content_qp) {
-			decodebuf = buffer_create_static_hard(data_stack_pool,
-							      data_size);
+			decodebuf = buffer_create_static_hard(pool, data_size);
 			quoted_printable_decode(data, data_size,
 						&data_size, decodebuf);
 		} else if (ctx->content_base64) {
 			size_t size = MAX_BASE64_DECODED_SIZE(data_size);
-			decodebuf = buffer_create_static_hard(data_stack_pool,
-							      size);
+			decodebuf = buffer_create_static_hard(pool, size);
 
 			if (base64_decode(data, data_size,
 					  &data_size, decodebuf) < 0) {
@@ -330,8 +331,8 @@
 				break;
 			}
 		} else {
-			decodebuf = buffer_create_const_data(data_stack_pool,
-							     data, data_size);
+			decodebuf = buffer_create_const_data(pool, data,
+							     data_size);
 		}
 
 		ret = message_search_body_block(ctx, decodebuf);

Index: message-header-decode.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-mail/message-header-decode.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- message-header-decode.c	27 Jan 2003 02:00:00 -0000	1.4
+++ message-header-decode.c	21 Sep 2003 16:21:37 -0000	1.5
@@ -64,7 +64,8 @@
 		return TRUE;
 	}
 
-	decodebuf = buffer_create_static_hard(data_stack_pool, text_size);
+	decodebuf = buffer_create_static_hard(pool_datastack_create(),
+					      text_size);
 
 	if (*encoding == 'Q')
 		quoted_printable_decode(text, text_size, NULL, decodebuf);



More information about the dovecot-cvs mailing list