[dovecot-cvs] dovecot/src/lib-mail istream-header-filter.c, 1.32,
1.33 message-body-search.c, 1.25, 1.26 message-header-search.c,
1.16, 1.17 message-header-search.h, 1.5, 1.6 message-parser.c,
1.70, 1.71 message-parser.h, 1.29, 1.30
cras at dovecot.org
cras at dovecot.org
Sat Jan 14 20:47:40 EET 2006
- Previous message: [dovecot-cvs] dovecot/src/lib-settings settings.c,1.11,1.12
- Next message: [dovecot-cvs] dovecot/src/lib-index mail-cache-compress.c, 1.39,
1.40 mail-cache.c, 1.76, 1.77 mail-cache.h, 1.25,
1.26 mail-index-private.h, 1.62, 1.63 mail-index-sync-update.c,
1.90, 1.91 mail-index-sync.c, 1.66,
1.67 mail-index-transaction-private.h, 1.27,
1.28 mail-index-transaction-view.c, 1.15,
1.16 mail-index-transaction.c, 1.71,
1.72 mail-index-view-sync.c, 1.48, 1.49 mail-index-view.c,
1.41, 1.42 mail-index.c, 1.218, 1.219 mail-index.h, 1.156,
1.157 mail-transaction-log-view.c, 1.44,
1.45 mail-transaction-log.c, 1.105,
1.106 mail-transaction-log.h, 1.30, 1.31
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /var/lib/cvs/dovecot/src/lib-mail
In directory talvi:/tmp/cvs-serv16037/lib-mail
Modified Files:
istream-header-filter.c message-body-search.c
message-header-search.c message-header-search.h
message-parser.c message-parser.h
Log Message:
deinit, unref, destroy, close, free, etc. functions now take a pointer to
their data pointer, and set it to NULL. This makes double-frees less likely
to cause security holes.
Index: istream-header-filter.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-mail/istream-header-filter.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -d -r1.32 -r1.33
--- istream-header-filter.c 13 Jan 2006 20:26:16 -0000 1.32
+++ istream-header-filter.c 14 Jan 2006 18:47:35 -0000 1.33
@@ -45,8 +45,8 @@
(struct header_filter_istream *)stream;
if (mstream->hdr_ctx != NULL)
- message_parse_header_deinit(mstream->hdr_ctx);
- i_stream_unref(mstream->input);
+ message_parse_header_deinit(&mstream->hdr_ctx);
+ i_stream_unref(&mstream->input);
pool_unref(mstream->pool);
}
@@ -166,7 +166,7 @@
if (hdr == NULL) {
/* finished */
- message_parse_header_deinit(mstream->hdr_ctx);
+ message_parse_header_deinit(&mstream->hdr_ctx);
mstream->hdr_ctx = NULL;
if (!mstream->header_parsed && mstream->callback != NULL)
@@ -255,7 +255,7 @@
stream->buffer = NULL;
if (mstream->hdr_ctx != NULL) {
- message_parse_header_deinit(mstream->hdr_ctx);
+ message_parse_header_deinit(&mstream->hdr_ctx);
mstream->hdr_ctx = NULL;
}
Index: message-body-search.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-mail/message-body-search.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- message-body-search.c 13 Jan 2006 20:26:16 -0000 1.25
+++ message-body-search.c 14 Jan 2006 18:47:35 -0000 1.26
@@ -155,7 +155,7 @@
}
}
i_assert(ret != 0);
- message_parse_header_deinit(hdr_ctx);
+ message_parse_header_deinit(&hdr_ctx);
return found;
}
@@ -346,10 +346,10 @@
pos -= data_size;
}
- i_stream_unref(input);
+ i_stream_unref(&input);
if (ctx->translation != NULL)
- charset_to_utf8_end(ctx->translation);
+ charset_to_utf8_end(&ctx->translation);
buffer_free(ctx->decode_buf);
return found;
}
Index: message-header-search.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-mail/message-header-search.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- message-header-search.c 13 Jan 2006 20:26:16 -0000 1.16
+++ message-header-search.c 14 Jan 2006 18:47:35 -0000 1.17
@@ -71,8 +71,9 @@
return ctx;
}
-void message_header_search_free(struct header_search_context *ctx)
+void message_header_search_free(struct header_search_context **_ctx)
{
+ struct header_search_context *ctx = *_ctx;
pool_t pool;
buffer_free(ctx->match_buf);
@@ -81,6 +82,8 @@
p_free(pool, ctx->key);
p_free(pool, ctx->key_charset);
p_free(pool, ctx);
+
+ *_ctx = NULL;
}
static void search_with_charset(const unsigned char *data, size_t size,
Index: message-header-search.h
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-mail/message-header-search.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- message-header-search.h 13 Jan 2006 20:26:16 -0000 1.5
+++ message-header-search.h 14 Jan 2006 18:47:35 -0000 1.6
@@ -10,7 +10,7 @@
bool *unknown_charset);
/* Free search context. Not needed if you just destroy the pool. */
-void message_header_search_free(struct header_search_context *ctx);
+void message_header_search_free(struct header_search_context **ctx);
/* Returns TRUE if key is found from header. This function may be called
multiple times with partial header blocks, but the blocks must contain only
Index: message-parser.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-mail/message-parser.c,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -d -r1.70 -r1.71
--- message-parser.c 13 Jan 2006 20:26:16 -0000 1.70
+++ message-parser.c 14 Jan 2006 18:47:35 -0000 1.71
@@ -253,7 +253,7 @@
parser_ctx->callback(part, NULL, parser_ctx->context);
if (hdr_ctx->has_nuls)
part->flags |= MESSAGE_PART_FLAG_HAS_NULS;
- message_parse_header_deinit(hdr_ctx);
+ message_parse_header_deinit(&hdr_ctx);
i_assert((part->flags & MUTEX_FLAGS) != MUTEX_FLAGS);
}
@@ -587,10 +587,12 @@
return ctx;
}
-struct message_part *message_parser_deinit(struct message_parser_ctx *ctx)
+struct message_part *message_parser_deinit(struct message_parser_ctx **_ctx)
{
+ struct message_parser_ctx *ctx = *_ctx;
struct message_part *parts = ctx->parts;
+ *_ctx = NULL;
pool_unref(ctx->parser_pool);
return parts;
}
@@ -658,7 +660,7 @@
while ((ret = message_parse_header_next(hdr_ctx, &hdr)) > 0)
callback(part, hdr, context);
i_assert(ret != 0);
- message_parse_header_deinit(hdr_ctx);
+ message_parse_header_deinit(&hdr_ctx);
/* call after the final skipping */
callback(part, NULL, context);
@@ -681,13 +683,17 @@
return ctx;
}
-void message_parse_header_deinit(struct message_header_parser_ctx *ctx)
+void message_parse_header_deinit(struct message_header_parser_ctx **_ctx)
{
+ struct message_header_parser_ctx *ctx = *_ctx;
+
i_stream_skip(ctx->input, ctx->skip);
if (ctx->value_buf != NULL)
buffer_free(ctx->value_buf);
- str_free(ctx->name);
+ str_free(&ctx->name);
i_free(ctx);
+
+ *_ctx = NULL;
}
int message_parse_header_next(struct message_header_parser_ctx *ctx,
Index: message-parser.h
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-mail/message-parser.h,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- message-parser.h 13 Jan 2006 20:26:16 -0000 1.29
+++ message-parser.h 14 Jan 2006 18:47:35 -0000 1.30
@@ -84,7 +84,7 @@
are allocated from. */
struct message_parser_ctx *
message_parser_init(pool_t part_pool, struct istream *input);
-struct message_part *message_parser_deinit(struct message_parser_ctx *ctx);
+struct message_part *message_parser_deinit(struct message_parser_ctx **ctx);
/* Read and parse header. */
void message_parser_parse_header(struct message_parser_ctx *ctx,
@@ -106,7 +106,7 @@
struct message_header_parser_ctx *
message_parse_header_init(struct istream *input, struct message_size *hdr_size,
bool skip_initial_lwsp);
-void message_parse_header_deinit(struct message_header_parser_ctx *ctx);
+void message_parse_header_deinit(struct message_header_parser_ctx **ctx);
/* Read and return next header line. Returns 1 if header is returned, 0 if
input stream is non-blocking and more data needs to be read, -1 when all is
- Previous message: [dovecot-cvs] dovecot/src/lib-settings settings.c,1.11,1.12
- Next message: [dovecot-cvs] dovecot/src/lib-index mail-cache-compress.c, 1.39,
1.40 mail-cache.c, 1.76, 1.77 mail-cache.h, 1.25,
1.26 mail-index-private.h, 1.62, 1.63 mail-index-sync-update.c,
1.90, 1.91 mail-index-sync.c, 1.66,
1.67 mail-index-transaction-private.h, 1.27,
1.28 mail-index-transaction-view.c, 1.15,
1.16 mail-index-transaction.c, 1.71,
1.72 mail-index-view-sync.c, 1.48, 1.49 mail-index-view.c,
1.41, 1.42 mail-index.c, 1.218, 1.219 mail-index.h, 1.156,
1.157 mail-transaction-log-view.c, 1.44,
1.45 mail-transaction-log.c, 1.105,
1.106 mail-transaction-log.h, 1.30, 1.31
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the dovecot-cvs
mailing list