dovecot-2.2: Changes to make static analyzer happier.
dovecot at dovecot.org
dovecot at dovecot.org
Sun May 20 03:26:30 EEST 2012
details: http://hg.dovecot.org/dovecot-2.2/rev/ba1fc76e3a2c
changeset: 14391:ba1fc76e3a2c
user: Timo Sirainen <tss at iki.fi>
date: Mon Mar 26 20:39:09 2012 +0300
description:
Changes to make static analyzer happier.
diffstat:
src/config/config-filter.c | 7 +++-
src/doveadm/doveadm-stats.c | 2 +-
src/doveadm/dsync/doveadm-dsync.c | 4 +-
src/doveadm/dsync/test-dsync-proxy-server-cmd.c | 2 +
src/imap/imap-sync.c | 7 +++-
src/lib-dict/dict-sql.c | 6 ++-
src/lib-mail/message-parser.c | 29 ++++++++++++++------
src/lib-master/master-login.c | 6 ++-
src/lib-storage/index/cydir/cydir-mail.c | 6 ++-
src/lib-storage/index/maildir/maildir-mail.c | 14 +++++----
src/lib-storage/index/maildir/maildir-sync.c | 6 +++-
src/lib-storage/list/subscription-file.c | 34 +++++++++++-------------
src/lib/file-cache.c | 10 ++++++-
src/lib/ostream.c | 3 +-
src/lib/process-title.c | 2 +
src/lib/strfuncs.c | 4 ++
src/lib/test-str-find.c | 3 +-
src/plugins/expire/doveadm-expire.c | 2 +
src/plugins/fts-squat/squat-trie.c | 1 +
src/plugins/fts-squat/squat-uidlist.c | 3 ++
20 files changed, 101 insertions(+), 50 deletions(-)
diffs (truncated from 488 to 300 lines):
diff -r e05be9afaed0 -r ba1fc76e3a2c src/config/config-filter.c
--- a/src/config/config-filter.c Mon Mar 26 20:38:18 2012 +0300
+++ b/src/config/config-filter.c Mon Mar 26 20:39:09 2012 +0300
@@ -287,14 +287,17 @@
const struct config_filter_parser *src,
pool_t pool, const char **error_r)
{
+ const char *conflict_key;
unsigned int i;
for (i = 0; dest[i].root != NULL; i++) {
if (settings_parser_apply_changes(dest[i].parser,
src->parsers[i].parser, pool,
- error_r) < 0) {
+ error_r == NULL ? NULL :
+ &conflict_key) < 0) {
+ i_assert(error_r != NULL);
*error_r = t_strdup_printf("Conflict in setting %s "
- "found from filter at %s", *error_r,
+ "found from filter at %s", conflict_key,
src->file_and_line);
return -1;
}
diff -r e05be9afaed0 -r ba1fc76e3a2c src/doveadm/doveadm-stats.c
--- a/src/doveadm/doveadm-stats.c Mon Mar 26 20:38:18 2012 +0300
+++ b/src/doveadm/doveadm-stats.c Mon Mar 26 20:39:09 2012 +0300
@@ -102,7 +102,7 @@
do {
T_BEGIN {
args = read_next_line(input);
- if (args[0] == NULL)
+ if (args != NULL && args[0] == NULL)
args = NULL;
if (args != NULL) {
for (i = 0; args[i] != NULL; i++)
diff -r e05be9afaed0 -r ba1fc76e3a2c src/doveadm/dsync/doveadm-dsync.c
--- a/src/doveadm/dsync/doveadm-dsync.c Mon Mar 26 20:38:18 2012 +0300
+++ b/src/doveadm/dsync/doveadm-dsync.c Mon Mar 26 20:39:09 2012 +0300
@@ -655,7 +655,7 @@
/* @UNSAFE: this is called when the "doveadm" binary is called as
"dsync" (for backwards compatibility) */
max_argc = argc + 7;
- new_argv = calloc(sizeof(char *), max_argc);
+ new_argv = t_new(char *, max_argc);
new_argv[0] = argv[0];
dest = 1;
getopt_str = master_service_getopt_string();
@@ -666,7 +666,7 @@
break;
flag_m = FALSE; flag_C = FALSE; has_arg = FALSE; flag_u = FALSE;
- dup = strdup(argv[src]);
+ dup = t_strdup_noconst(argv[src]);
for (i = j = 1; argv[src][i] != '\0'; i++) {
switch (argv[src][i]) {
case 'C':
diff -r e05be9afaed0 -r ba1fc76e3a2c src/doveadm/dsync/test-dsync-proxy-server-cmd.c
--- a/src/doveadm/dsync/test-dsync-proxy-server-cmd.c Mon Mar 26 20:38:18 2012 +0300
+++ b/src/doveadm/dsync/test-dsync-proxy-server-cmd.c Mon Mar 26 20:39:09 2012 +0300
@@ -30,6 +30,8 @@
{
int ret;
+ i_assert(cur_cmd != NULL);
+
ret = cur_cmd->func(server, cur_cmd_args);
if (ret == 0)
return 0;
diff -r e05be9afaed0 -r ba1fc76e3a2c src/imap/imap-sync.c
--- a/src/imap/imap-sync.c Mon Mar 26 20:38:18 2012 +0300
+++ b/src/imap/imap-sync.c Mon Mar 26 20:39:09 2012 +0300
@@ -669,8 +669,11 @@
for (; cmd != NULL; cmd = prev) {
prev = cmd->next;
- if (cmd->state == CLIENT_COMMAND_STATE_WAIT_SYNC &&
- (cmd->sync->flags & MAILBOX_SYNC_FLAG_FAST) != 0) {
+ if (cmd->state != CLIENT_COMMAND_STATE_WAIT_SYNC)
+ continue;
+
+ i_assert(cmd->sync != NULL);
+ if ((cmd->sync->flags & MAILBOX_SYNC_FLAG_FAST) != 0) {
if (cmd_finish_sync(cmd)) {
client_command_free(&cmd);
ret = TRUE;
diff -r e05be9afaed0 -r ba1fc76e3a2c src/lib-dict/dict-sql.c
--- a/src/lib-dict/dict-sql.c Mon Mar 26 20:38:18 2012 +0300
+++ b/src/lib-dict/dict-sql.c Mon Mar 26 20:39:09 2012 +0300
@@ -164,14 +164,16 @@
return FALSE;
}
}
+
+ *path_len_r = path - path_start;
+ *pat_len_r = pat - map->pattern;
+
if (*pat == '\0')
return *path == '\0';
else if (!partial_ok)
return FALSE;
else {
/* partial matches must end with '/' */
- *path_len_r = path - path_start;
- *pat_len_r = pat - map->pattern;
return pat == map->pattern || pat[-1] == '/';
}
}
diff -r e05be9afaed0 -r ba1fc76e3a2c src/lib-mail/message-parser.c
--- a/src/lib-mail/message-parser.c Mon Mar 26 20:38:18 2012 +0300
+++ b/src/lib-mail/message-parser.c Mon Mar 26 20:39:09 2012 +0300
@@ -702,10 +702,10 @@
return preparsed_parse_next_header(ctx, block_r);
}
-struct message_parser_ctx *
-message_parser_init(pool_t part_pool, struct istream *input,
- enum message_header_parser_flags hdr_flags,
- enum message_parser_flags flags)
+static struct message_parser_ctx *
+message_parser_init_int(struct istream *input,
+ enum message_header_parser_flags hdr_flags,
+ enum message_parser_flags flags)
{
struct message_parser_ctx *ctx;
pool_t pool;
@@ -713,14 +713,24 @@
pool = pool_alloconly_create("Message Parser", 1024);
ctx = p_new(pool, struct message_parser_ctx, 1);
ctx->parser_pool = pool;
- ctx->part_pool = part_pool;
ctx->hdr_flags = hdr_flags;
ctx->flags = flags;
ctx->input = input;
- ctx->parts = ctx->part = part_pool == NULL ? NULL :
- p_new(part_pool, struct message_part, 1);
+ i_stream_ref(input);
+ return ctx;
+}
+
+struct message_parser_ctx *
+message_parser_init(pool_t part_pool, struct istream *input,
+ enum message_header_parser_flags hdr_flags,
+ enum message_parser_flags flags)
+{
+ struct message_parser_ctx *ctx;
+
+ ctx = message_parser_init_int(input, hdr_flags, flags);
+ ctx->part_pool = part_pool;
+ ctx->parts = ctx->part = p_new(part_pool, struct message_part, 1);
ctx->parse_next_block = parse_next_header_init;
- i_stream_ref(input);
return ctx;
}
@@ -732,7 +742,7 @@
{
struct message_parser_ctx *ctx;
- ctx = message_parser_init(NULL, input, hdr_flags, flags);
+ ctx = message_parser_init_int(input, hdr_flags, flags);
ctx->parts = ctx->part = parts;
ctx->parse_next_block = preparsed_parse_next_header_init;
return ctx;
@@ -806,6 +816,7 @@
break;
}
i_assert(ret != 0);
+ i_assert(ctx->part != NULL);
if (ret < 0) {
/* well, can't return error so fake end of headers */
diff -r e05be9afaed0 -r ba1fc76e3a2c src/lib-master/master-login.c
--- a/src/lib-master/master-login.c Mon Mar 26 20:38:18 2012 +0300
+++ b/src/lib-master/master-login.c Mon Mar 26 20:39:09 2012 +0300
@@ -187,8 +187,10 @@
/* FIXME: currently we create a separate connection for each request,
so close the connection after we're done with this client */
- if (!master_login_conn_is_closed(client->conn))
- master_login_conn_unref(&client->conn);
+ if (!master_login_conn_is_closed(client->conn)) {
+ i_assert(client->conn->refcount > 1);
+ client->conn->refcount--;
+ }
master_login_conn_unref(&client->conn);
i_free(client);
}
diff -r e05be9afaed0 -r ba1fc76e3a2c src/lib-storage/index/cydir/cydir-mail.c
--- a/src/lib-storage/index/cydir/cydir-mail.c Mon Mar 26 20:38:18 2012 +0300
+++ b/src/lib-storage/index/cydir/cydir-mail.c Mon Mar 26 20:39:09 2012 +0300
@@ -22,8 +22,10 @@
{
const char *path;
- if (mail->lookup_abort == MAIL_LOOKUP_ABORT_NOT_IN_CACHE)
- return mail_set_aborted(mail);
+ if (mail->lookup_abort == MAIL_LOOKUP_ABORT_NOT_IN_CACHE) {
+ mail_set_aborted(mail);
+ return -1;
+ }
mail->transaction->stats.stat_lookup_count++;
path = cydir_mail_get_path(mail);
diff -r e05be9afaed0 -r ba1fc76e3a2c src/lib-storage/index/maildir/maildir-mail.c
--- a/src/lib-storage/index/maildir/maildir-mail.c Mon Mar 26 20:38:18 2012 +0300
+++ b/src/lib-storage/index/maildir/maildir-mail.c Mon Mar 26 20:39:09 2012 +0300
@@ -102,7 +102,7 @@
return input;
}
-static int maildir_mail_stat(struct mail *mail, struct stat *st)
+static int maildir_mail_stat(struct mail *mail, struct stat *st_r)
{
struct maildir_mailbox *mbox = (struct maildir_mailbox *)mail->box;
struct index_mail *imail = (struct index_mail *)mail;
@@ -110,8 +110,10 @@
const char *path;
int ret;
- if (mail->lookup_abort == MAIL_LOOKUP_ABORT_NOT_IN_CACHE)
- return mail_set_aborted(mail);
+ if (mail->lookup_abort == MAIL_LOOKUP_ABORT_NOT_IN_CACHE) {
+ mail_set_aborted(mail);
+ return -1;
+ }
if (imail->data.access_part != 0 &&
imail->data.stream == NULL) {
@@ -126,10 +128,10 @@
stp = i_stream_stat(imail->data.stream, FALSE);
if (stp == NULL)
return -1;
- *st = *stp;
+ *st_r = *stp;
} else if (!mail->saving) {
mail->transaction->stats.stat_lookup_count++;
- ret = maildir_file_do(mbox, mail->uid, do_stat, st);
+ ret = maildir_file_do(mbox, mail->uid, do_stat, st_r);
if (ret <= 0) {
if (ret == 0)
mail_set_expunged(mail);
@@ -138,7 +140,7 @@
} else {
mail->transaction->stats.stat_lookup_count++;
path = maildir_save_file_get_path(mail->transaction, mail->seq);
- if (stat(path, st) < 0) {
+ if (stat(path, st_r) < 0) {
mail_storage_set_critical(mail->box->storage,
"stat(%s) failed: %m", path);
return -1;
diff -r e05be9afaed0 -r ba1fc76e3a2c src/lib-storage/index/maildir/maildir-sync.c
--- a/src/lib-storage/index/maildir/maildir-sync.c Mon Mar 26 20:38:18 2012 +0300
+++ b/src/lib-storage/index/maildir/maildir-sync.c Mon Mar 26 20:39:09 2012 +0300
@@ -595,6 +595,8 @@
struct stat new_st, cur_st;
bool refreshed = FALSE, check_new = FALSE, check_cur = FALSE;
+ *why_r = 0;
+
if (mbox->maildir_hdr.new_mtime == 0) {
maildir_sync_get_header(mbox);
if (mbox->maildir_hdr.new_mtime == 0) {
@@ -710,6 +712,8 @@
enum mail_index_sync_flags flags = 0;
bool undirty = (ctx->flags & MAILBOX_SYNC_FLAG_FULL_READ) != 0;
+ *why_r = 0;
+
if (maildir_sync_quick_check(mbox, undirty, ctx->new_dir, ctx->cur_dir,
new_changed_r, cur_changed_r, why_r) < 0)
return -1;
@@ -752,7 +756,7 @@
enum maildir_uidlist_rec_flag flags;
bool new_changed, cur_changed, lock_failure;
const char *fname;
- enum maildir_scan_why why = 0;
+ enum maildir_scan_why why;
int ret;
*lost_files_r = FALSE;
diff -r e05be9afaed0 -r ba1fc76e3a2c src/lib-storage/list/subscription-file.c
--- a/src/lib-storage/list/subscription-file.c Mon Mar 26 20:38:18 2012 +0300
+++ b/src/lib-storage/list/subscription-file.c Mon Mar 26 20:39:09 2012 +0300
@@ -57,8 +57,6 @@
const char *line;
*failed_r = FALSE;
- if (input == NULL)
- return NULL;
while ((line = i_stream_next_line(input)) == NULL) {
switch (i_stream_read(input)) {
@@ -138,24 +136,26 @@
return -1;
}
- input = fd_in == -1 ? NULL :
- i_stream_create_fd(fd_in, list->mailbox_name_max_length+1,
- TRUE);
+ found = FALSE;
More information about the dovecot-cvs
mailing list