Mercurial > dovecot > original-hg > dovecot-1.2
changeset 8439:596a577698c1 HEAD
Changed all config file readers to not ignore the last line if it's missing LF.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 19 Nov 2008 16:28:46 +0200 |
parents | 1baa595093f5 |
children | a3feb99907af |
files | src/auth/db-passwd-file.c src/deliver/deliver.c src/lib-settings/settings.c src/plugins/acl/acl-backend-vfile.c src/plugins/trash/trash-plugin.c src/plugins/virtual/virtual-config.c |
diffstat | 6 files changed, 7 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/src/auth/db-passwd-file.c Wed Nov 19 16:28:22 2008 +0200 +++ b/src/auth/db-passwd-file.c Wed Nov 19 16:28:46 2008 +0200 @@ -183,6 +183,7 @@ str_hash, (hash_cmp_callback_t *)strcmp); input = i_stream_create_fd(pw->fd, 4096, FALSE); + i_stream_set_return_partial_line(input, TRUE); while ((line = i_stream_read_next_line(input)) != NULL) { if (*line == '\0' || *line == ':' || *line == '#') continue; /* no username or comment */
--- a/src/deliver/deliver.c Wed Nov 19 16:28:22 2008 +0200 +++ b/src/deliver/deliver.c Wed Nov 19 16:28:46 2008 +0200 @@ -334,6 +334,7 @@ i_fatal_status(EX_CONFIG, "open(%s) failed: %m", path); input = i_stream_create_fd(fd, 1024, TRUE); + i_stream_set_return_partial_line(input, TRUE); while ((line = i_stream_read_next_line(input)) != NULL) { /* @UNSAFE: line is modified */
--- a/src/lib-settings/settings.c Wed Nov 19 16:28:22 2008 +0200 +++ b/src/lib-settings/settings.c Wed Nov 19 16:28:46 2008 +0200 @@ -93,20 +93,8 @@ full_line = t_str_new(512); linenum = 0; sections = 0; root_section = 0; errormsg = NULL; input = i_stream_create_fd(fd, 2048, TRUE); - for (;;) { - line = i_stream_read_next_line(input); - if (line == NULL) { - /* EOF. Also handle the last line even if it doesn't - contain LF. */ - const unsigned char *data; - size_t size; - - data = i_stream_get_data(input, &size); - if (size == 0) - break; - line = t_strdup_noconst(t_strndup(data, size)); - i_stream_skip(input, size); - } + i_stream_set_return_partial_line(input, TRUE); + while ((line = i_stream_read_next_line(input)) != NULL) { linenum++; /* @UNSAFE: line is modified */
--- a/src/plugins/acl/acl-backend-vfile.c Wed Nov 19 16:28:22 2008 +0200 +++ b/src/plugins/acl/acl-backend-vfile.c Wed Nov 19 16:28:46 2008 +0200 @@ -496,6 +496,7 @@ i_info("acl vfile: reading file %s", path); input = i_stream_create_fd(fd, 4096, FALSE); + i_stream_set_return_partial_line(input, TRUE); linenum = 1; while ((line = i_stream_read_next_line(input)) != NULL) { T_BEGIN {
--- a/src/plugins/trash/trash-plugin.c Wed Nov 19 16:28:22 2008 +0200 +++ b/src/plugins/trash/trash-plugin.c Wed Nov 19 16:28:46 2008 +0200 @@ -264,6 +264,7 @@ p_array_init(&tuser->trash_boxes, user->pool, INIT_TRASH_MAILBOX_COUNT); input = i_stream_create_fd(fd, (size_t)-1, FALSE); + i_stream_set_return_partial_line(input, TRUE); while ((line = i_stream_read_next_line(input)) != NULL) { /* <priority> <mailbox name> */ name = strchr(line, ' ');
--- a/src/plugins/virtual/virtual-config.c Wed Nov 19 16:28:22 2008 +0200 +++ b/src/plugins/virtual/virtual-config.c Wed Nov 19 16:28:46 2008 +0200 @@ -271,6 +271,7 @@ ctx.pool = mbox->ibox.box.pool; ctx.rule = t_str_new(256); ctx.input = i_stream_create_fd(fd, (size_t)-1, FALSE); + i_stream_set_return_partial_line(ctx.input, TRUE); while ((line = i_stream_read_next_line(ctx.input)) != NULL) { linenum++; if (*line == '#')