]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Changed all config file readers to not ignore the last line if it's missing LF.
authorTimo Sirainen <tss@iki.fi>
Wed, 19 Nov 2008 14:28:46 +0000 (16:28 +0200)
committerTimo Sirainen <tss@iki.fi>
Wed, 19 Nov 2008 14:28:46 +0000 (16:28 +0200)
--HG--
branch : HEAD

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

index f9d6015451334325c74dbaec7e1a94f1bf28183b..4877827c0b12e32ead63cb95af5c135b654c0874 100644 (file)
@@ -183,6 +183,7 @@ static bool passwd_file_open(struct passwd_file *pw)
                                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 */
index 87a74241fe97b5440827216341e8d417bb1f0765..bbd47a88f5d9487665df2b50a6046ba0fc72c475 100644 (file)
@@ -334,6 +334,7 @@ static void config_file_init(const char *path)
                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 */
 
index 5ec5530b395cc786e31172d6252fbb97655ba5ba..528a52c86c96b41b3d3f0f9475e0753f59f5f768 100644 (file)
@@ -93,20 +93,8 @@ settings_read_real(const char *path, const char *section,
        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 */
index 5349da527b33b446e8d00f335584f64b3612ff02..500440eea595e50cae0c0ac627ce51643eafa0c4 100644 (file)
@@ -496,6 +496,7 @@ acl_backend_vfile_read(struct acl_object_vfile *aclobj,
                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 {
index 5dfb45f111f4873150c3c319767b0cd5622a0b1c..12585b129ba3dbe612d9d09dc54754e24d150660 100644 (file)
@@ -264,6 +264,7 @@ static int read_configuration(struct mail_user *user, const char *path)
        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, ' ');
index 10cc0210e440f7518fff90a0b46ae5a55dabdfe2..777074ab0b51b3be230a977ba649ba675c2cdb35 100644 (file)
@@ -271,6 +271,7 @@ int virtual_config_read(struct virtual_mailbox *mbox)
        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 == '#')