[Dovecot] suspect valgrind error in mail-index-map.c

Diego Liziero diegoliz at gmail.com
Sun Mar 9 22:16:40 EET 2008


On Sun, Mar 9, 2008 at 2:07 AM, Diego Liziero <diegoliz at gmail.com> wrote:
> [..]
>
> 180 (124 direct, 56 indirect) bytes in 1 blocks are definitely lost in loss record 3 of 5
> [..]
>  by 0x80B59CB: mail_transaction_log_file_alloc (mail-transaction-log-file.c:51)
>  by 0x80B3A86: mail_transaction_log_find_file (mail-transaction-log.c:385)

I think that it's this last line causing the error.

----  mail-transaction-log.c
343 int mail_transaction_log_find_file(struct mail_transaction_log *log,
344 				   uint32_t file_seq, bool nfs_flush,
345 				   struct mail_transaction_log_file **file_r)
346 {
347 	struct mail_transaction_log_file *file;
348 	const char *path;
349 	int ret;
[..]
382 	/* see if we have it in log.2 file */
383 	path = t_strconcat(log->index->filepath,
384 			   MAIL_TRANSACTION_LOG_SUFFIX".2", NULL);
385 	file = mail_transaction_log_file_alloc(log, path);

Here a new mail_transaction_log_file is allocated before getting lost.
Maybe I'm wrong, but, isn't here a path where
mail_transaction_log_file_free(&file); should be called before
returning without losing the memory pointed by file?

386 	if ((ret = mail_transaction_log_file_open(file, TRUE)) <= 0)
387 		return ret;
388
389 	/* but is it what we expected? */
390 	if (file->hdr.file_seq != file_seq)
391 		return 0;
392
393 	*file_r = file;
394 	return 1;
395 }

Regards,
Diego.


More information about the dovecot mailing list