]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
global: Replace str_append_n() with str_append_data() wherever possible
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Sat, 21 Apr 2018 12:24:28 +0000 (15:24 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 30 Aug 2018 08:15:11 +0000 (11:15 +0300)
It shouldn't be possible for input to have NULs in any of these places.
This makes the extra NUL-check in str_append_n() unnecessary.

50 files changed:
src/auth/auth-cache.c
src/auth/db-dict-cache-key.c
src/auth/db-ldap.c
src/auth/password-scheme-md5crypt.c
src/config/config-parser.c
src/config/doveconf.c
src/lib-dict-backend/dict-ldap.c
src/lib-dict/dict.c
src/lib-fs/fs-posix.c
src/lib-fs/fs-sis.c
src/lib-fts/fts-tokenizer-address.c
src/lib-http/http-auth.c
src/lib-http/http-header-parser.c
src/lib-http/http-parser.c
src/lib-http/http-url.c
src/lib-imap/imap-quote.c
src/lib-imap/imap-url.c
src/lib-imap/imap-utf7.c
src/lib-mail/message-header-parser.c
src/lib-mail/message-snippet.c
src/lib-mail/rfc822-parser.c
src/lib-mail/test-istream-dot.c
src/lib-mail/test-istream-header-filter.c
src/lib-mail/test-istream-qp-decoder.c
src/lib-mail/test-istream-qp-encoder.c
src/lib-mail/test-message-header-parser.c
src/lib-mail/test-message-parser.c
src/lib-settings/settings-parser.c
src/lib-settings/settings.c
src/lib-smtp/smtp-address.c
src/lib-smtp/smtp-parser.c
src/lib-smtp/smtp-reply-parser.c
src/lib-smtp/smtp-server-reply.c
src/lib-smtp/smtp-syntax.c
src/lib-storage/index/index-mail-headers.c
src/lib-storage/index/maildir/maildir-uidlist.c
src/lib-storage/index/mbox/mbox-save.c
src/lib-storage/index/mbox/mbox-sync-parse.c
src/lib-storage/mailbox-attribute.c
src/lib-storage/mailbox-list.c
src/lib-storage/mailbox-tree.c
src/lib/failures.c
src/lib/file-dotlock.c
src/lib/istream.c
src/lib/str-sanitize.c
src/lib/strescape.c
src/lib/test-path-util.c
src/lib/uri-util.c
src/plugins/fts-solr/fts-backend-solr-old.c
src/plugins/fts-solr/fts-backend-solr.c

index 70ca4a87935c1d49195b53db6f220c2ad474693a..6d096c1847c5da40cb921a26d65bad51ed4e7cdd 100644 (file)
@@ -57,7 +57,7 @@ auth_cache_key_add_var(string_t *str, const char *data, unsigned int len)
                str_append_c(str, data[0]);
        else {
                str_append_c(str, '{');
-               str_append_n(str, data, len);
+               str_append_data(str, data, len);
                str_append_c(str, '}');
        }
 }
index f2bda35c3d3afdf2217805b28aca003d04198134..1af6b0804fce136414614bfebefee473e560509b 100644 (file)
@@ -53,7 +53,7 @@ db_dict_parse_cache_key(const ARRAY_TYPE(db_dict_key) *keys,
                                str_printfa(str, "\t%%%c", p[0]);
                        } else {
                                str_append(str, "\t%{");
-                               str_append_n(str, p, size);
+                               str_append_data(str, p, size);
                                str_append_c(str, '}');
                        }
                        p += size;
index f62512d871274edfd88df1bdb55d57d917526c08..7a41b6758fcaf24444c88a15ffbe5cdff7c0a297 100644 (file)
@@ -1496,7 +1496,7 @@ const char *ldap_escape(const char *str,
                if (IS_LDAP_ESCAPED_CHAR(*p)) {
                        if (ret == NULL) {
                                ret = t_str_new((size_t) (p - str) + 64);
-                               str_append_n(ret, str, (size_t) (p - str));
+                               str_append_data(ret, str, (size_t) (p - str));
                        }
                        str_printfa(ret, "\\%02X", (unsigned char)*p);
                } else if (ret != NULL)
index 065286acf19321d0f9618a38e3347aede00b67c4..a75e3b2566bad91d8b685dd47f416aae7e73e3cc 100644 (file)
@@ -103,7 +103,7 @@ const char *password_generate_md5_crypt(const char *pw, const char *salt)
        /* Now make the output string */
        passwd = t_str_new(sl + 64);
        str_append(passwd, magic);
-       str_append_n(passwd, sp, sl);
+       str_append_data(passwd, sp, sl);
        str_append_c(passwd, '$');
 
        md5_final(&ctx,final);
index a4898fb44931b903b18c8413d64d0c5f2baa5bb3..0519644d9133547c0d5c86a8805ec855c5cf87e4 100644 (file)
@@ -77,7 +77,7 @@ static int config_add_type(struct setting_parser_context *parser,
 
        str = t_str_new(256);
        p = strchr(line, '=');
-       str_append_n(str, line, p-line);
+       str_append_data(str, line, p-line);
        str_append_c(str, SETTINGS_SEPARATOR);
        str_append(str, p+1);
        if (info != NULL) {
@@ -631,7 +631,7 @@ config_parse_line(struct config_parser_context *ctx,
                        len--;
                }
                if(len >= 1) {
-                       str_append_n(full_line, line, len);
+                       str_append_data(full_line, line, len);
                        str_append_c(full_line, ' ');
                }
                return CONFIG_LINE_TYPE_CONTINUE;
index 2b4a2766b7288a1edcaa720fbd7c19d2ca8157c0..c597e85aaf5b9e9a185adcb211d96aa7eb111dda 100644 (file)
@@ -426,7 +426,7 @@ config_dump_human_output(struct config_dump_human_context *ctx,
                                str_append_n(ctx->list_prefix, indent_str, indent*2);
                                p = strchr(key2, '/');
                                if (p != NULL)
-                                       str_append_n(ctx->list_prefix, key2, p - key2);
+                                       str_append_data(ctx->list_prefix, key2, p - key2);
                                else
                                        str_append(ctx->list_prefix, key2);
                                if (unique_key && *value != '\0') {
index 87415941d60a7f168bc269e56c2a47a849a90ff9..f504833f1c60729678a848189fc16e68a33c26c2 100644 (file)
@@ -179,7 +179,7 @@ static const char *ldap_escape(const char *str)
                if (IS_LDAP_ESCAPED_CHAR(*p)) {
                        if (ret == NULL) {
                                ret = t_str_new((size_t) (p - str) + 64);
-                               str_append_n(ret, str, (size_t) (p - str));
+                               str_append_data(ret, str, (size_t) (p - str));
                        }
                        str_printfa(ret, "\\%02X", (unsigned char)*p);
                } else if (ret != NULL)
index 40f55aaa554a7eb536d5458f576f8013f60478ed..99f986491ff693596c395613597cc37763694ad9 100644 (file)
@@ -370,7 +370,7 @@ const char *dict_escape_string(const char *str)
 
        /* escape */
        ret = t_str_new((size_t) (p - str) + 128);
-       str_append_n(ret, str, (size_t) (p - str));
+       str_append_data(ret, str, (size_t) (p - str));
 
        for (; *p != '\0'; p++) {
                switch (*p) {
@@ -406,7 +406,7 @@ const char *dict_unescape_string(const char *str)
 
        /* unescape */
        ret = t_str_new((size_t) (p - str) + strlen(p) + 1);
-       str_append_n(ret, str, (size_t) (p - str));
+       str_append_data(ret, str, (size_t) (p - str));
 
        for (; *p != '\0'; p++) {
                if (*p != '\\')
index 8b916359a1f79a63ba68d73997536f51f68ac6a9..20531db156aade0a5ceeb844c6e943734e3cfb8a 100644 (file)
@@ -252,7 +252,7 @@ static int fs_posix_create(struct posix_fs_file *file)
        i_assert(file->temp_path == NULL);
 
        if ((slash = strrchr(file->full_path, '/')) != NULL) {
-               str_append_n(str, file->full_path, slash - file->full_path);
+               str_append_data(str, file->full_path, slash - file->full_path);
                if (fs_posix_get_mode(fs, str_c(str), &mode) < 0)
                        return -1;
                str_append_c(str, '/');
index db8823460088a73081f3b4dd5bb02d318e4ce896..cb4931ec323e2ba8f0f903d345186a3259afb82b 100644 (file)
@@ -208,8 +208,8 @@ static void fs_sis_replace_hash_file(struct sis_fs_file *file)
        if (hash_fname == NULL)
                hash_fname = file->hash_path;
        else {
-               str_append_n(temp_path, file->hash_path,
-                            (hash_fname-file->hash_path) + 1);
+               str_append_data(temp_path, file->hash_path,
+                               (hash_fname-file->hash_path) + 1);
                hash_fname++;
        }
        str_printfa(temp_path, "%s%s.tmp",
index 8cf690a349e6466e2faf701ec6caee98ce02267e..59b73244d4aae586eaeee79a3f644b75bfe9f1d4 100644 (file)
@@ -157,14 +157,14 @@ fts_tokenizer_email_address_parse_local(struct email_address_fts_tokenizer *tok,
        }
         /* localpart and @ */
        if (seen_at && (pos > 1 || str_len(tok->last_word) > 0)) {
-               str_append_n(tok->last_word, data, pos);
+               str_append_data(tok->last_word, data, pos);
                *skip_r = pos;
                return EMAIL_ADDRESS_PARSER_STATE_DOMAIN;
        }
 
        /* localpart, @ not included yet */
        if (pos > 0 && (IS_ATEXT(data[pos-1]) || data[pos-1] == '.')) {
-               str_append_n(tok->last_word, data, pos);
+               str_append_data(tok->last_word, data, pos);
                *skip_r = pos;
                return  EMAIL_ADDRESS_PARSER_STATE_LOCALPART;
        }
@@ -195,12 +195,12 @@ fts_tokenizer_email_address_parse_domain(struct email_address_fts_tokenizer *tok
         /* A complete domain name */
        if ((pos > 0 && pos < size) || /* non-atext after atext in this data*/
            (pos < size && !domain_is_empty(tok))) { /* non-atext after previous atext */
-               str_append_n(tok->last_word, data, pos);
+               str_append_data(tok->last_word, data, pos);
                *skip_r = pos;
                return EMAIL_ADDRESS_PARSER_STATE_COMPLETE;
        }
        if (pos == size) { /* All good, but possibly not complete. */
-               str_append_n(tok->last_word, data, pos);
+               str_append_data(tok->last_word, data, pos);
                *skip_r = pos;
                return EMAIL_ADDRESS_PARSER_STATE_DOMAIN;
        }
index 01d8d2a8662165be10128ab516f97b2774b5a816..980910676054e2767c11e31e06fcf628d29e5686 100644 (file)
@@ -255,13 +255,13 @@ http_auth_create_param(string_t *out, const struct http_auth_param *param)
                p = first = param->value;
                while (*p != '\0') {
                        if (*p == '\\' || *p == '"') {
-                               str_append_n(out, first, p-first);
+                               str_append_data(out, first, p-first);
                                str_append_c(out, '\\');
                                first = p;
                        }
                        p++;
                }
-               str_append_n(out, first, p-first);
+               str_append_data(out, first, p-first);
                str_append_c(out, '"');
        } else {
                str_append(out, param->value);
index f2e6a46a177496c3cfaf6b8acf7b77c49f7c59bd..430a5309377f50cb6500c70a66abcd7e51997b31 100644 (file)
@@ -98,7 +98,7 @@ static int http_header_parse_name(struct http_header_parser *parser)
        while (parser->cur < parser->end && http_char_is_token(*parser->cur))
                parser->cur++;
 
-       str_append_n(parser->name, first, parser->cur-first);
+       str_append_data(parser->name, first, parser->cur-first);
 
        if (parser->cur == parser->end)
                return 0;
index 538e66d3c4dd5a7fec50e31fc3671dce089d13fb..7cd6c2a5957f7eb2cf4203e2172f39669656656f 100644 (file)
@@ -172,7 +172,7 @@ int http_parse_quoted_string(struct http_parser *parser, const char **str_r)
                if (parser->cur >= parser->end)
                        return -1;
 
-               str_append_n(str, first, parser->cur - first);
+               str_append_data(str, first, parser->cur - first);
 
                /* DQUOTE */
                if (*parser->cur == '"') {
index 92be838acc312c8fec2a35689664c36e4901e2ac..6815f2fcd0005d421ec05e76aacc5214f6c273d6 100644 (file)
@@ -270,7 +270,7 @@ static bool http_url_do_parse(struct http_url_parser *url_parser)
                        }
 
                        if (url != NULL && pend > pbegin)
-                               str_append_n(fullpath, pbegin, pend-pbegin);
+                               str_append_data(fullpath, pbegin, pend-pbegin);
                }
 
                /* append relative path */
index a903bc6d36af2e4c45b34cfb44da8231d72b9feb..c86114e8f2e68938b4d0d8ac36651e7c0b8df997 100644 (file)
@@ -197,7 +197,7 @@ void imap_append_string_for_humans(string_t *dest,
                /* fast path: we can simply write it as quoted string
                   without any escaping */
                str_append_c(dest, '"');
-               str_append_n(dest, src, size);
+               str_append_data(dest, src, size);
                str_append_c(dest, '"');
                return;
        }
index 294450f010e9c46d0cfca31c120572455971a002..a456e38e0d37826f76b5ac965dce881bdc0935ff 100644 (file)
@@ -499,7 +499,7 @@ imap_url_parse_path(struct imap_url_parser *url_parser,
                                if (p[-1] == '/') section_endslash = TRUE;
                                if (section == NULL)
                                        section = t_str_new(256);
-                               str_append_n(section, base->section, p-base->section);
+                               str_append_data(section, base->section, p-base->section);
                        }
                }
                /* /;UID= */
@@ -524,8 +524,8 @@ imap_url_parse_path(struct imap_url_parser *url_parser,
                        if (--rel <= 0 && p > base->mailbox) {
                                if (p[-1] == '/')
                                        mailbox_endslash = TRUE;
-                               str_append_n(mailbox, base->mailbox,
-                                            p - base->mailbox);
+                               str_append_data(mailbox, base->mailbox,
+                                               p - base->mailbox);
                        }
                }
        }
index 4ce0170ec2fcd45243ddc164f918992f2db1a706..f46eca1c261a27afd4f4c5983fc0b775e2157c4c 100644 (file)
@@ -81,7 +81,7 @@ int imap_utf8_to_utf7(const char *src, string_t *dest)
        }
 
        /* at least one encoded character */
-       str_append_n(dest, src, p-src);
+       str_append_data(dest, src, p-src);
        utf16 = t_malloc0(MALLOC_MULTIPLY(strlen(p), 2));
        while (*p != '\0') {
                if (*p == '&') {
@@ -265,7 +265,7 @@ int imap_utf7_to_utf8(const char *src, string_t *dest)
        }
 
        /* at least one encoded character */
-       str_append_n(dest, src, p-src);
+       str_append_data(dest, src, p-src);
        while (*p != '\0') {
                if (*p == '&') {
                        if (*++p == '-') {
index 97d42052419209d06e82f2a386c66c2482c5acc7..654a9f8f8a7d14f293db84f9296762d309986d89 100644 (file)
@@ -323,7 +323,7 @@ int message_parse_header_next(struct message_header_parser_ctx *ctx,
                   with use_full_value */
                line->middle = msg + colon_pos;
                line->middle_len = (size_t)(line->value - line->middle);
-               str_append_n(ctx->name, line->middle, line->middle_len);
+               str_append_data(ctx->name, line->middle, line->middle_len);
 
                line->name = str_c(ctx->name);
                line->name_len = colon_pos;
index 012d82ced5cc86df3ddd4c4327987daf16da669e..a2f9070eb50154fc2058f60e8546a7485e4cfa91 100644 (file)
@@ -84,7 +84,7 @@ static bool snippet_generate(struct snippet_context *ctx,
                        ctx->chars_left--;
                        count = uni_utf8_char_bytes(data[i]);
                        i_assert(i + count <= size);
-                       str_append_n(ctx->snippet, data + i, count);
+                       str_append_data(ctx->snippet, data + i, count);
                        break;
                case SNIPPET_STATE_QUOTED:
                        if (data[i] == '\n')
index b8508ffbcbb793f017ca750ade7f83f05d7dfc72..ed24a606636696a40bdc183db3e1678fc19fdaa0 100644 (file)
@@ -168,11 +168,11 @@ int rfc822_parse_atom(struct rfc822_parser_context *ctx, string_t *str)
                if (IS_ATEXT(*ctx->data))
                        continue;
 
-               str_append_n(str, start, ctx->data - start);
+               str_append_data(str, start, ctx->data - start);
                return rfc822_skip_lwsp(ctx);
        }
 
-       str_append_n(str, start, ctx->data - start);
+       str_append_data(str, start, ctx->data - start);
        return 0;
 }
 
@@ -199,7 +199,7 @@ int rfc822_parse_dot_atom(struct rfc822_parser_context *ctx, string_t *str)
                        continue;
                }
 
-               str_append_n(str, start, ctx->data - start);
+               str_append_data(str, start, ctx->data - start);
 
                if ((ret = rfc822_skip_lwsp(ctx)) <= 0)
                        return ret;
@@ -215,7 +215,7 @@ int rfc822_parse_dot_atom(struct rfc822_parser_context *ctx, string_t *str)
                start = ctx->data;
        }
 
-       str_append_n(str, start, ctx->data - start);
+       str_append_data(str, start, ctx->data - start);
        return 0;
 }
 
@@ -227,11 +227,11 @@ int rfc822_parse_mime_token(struct rfc822_parser_context *ctx, string_t *str)
                if (IS_ATEXT_NON_TSPECIAL(*ctx->data) || *ctx->data == '.')
                        continue;
 
-               str_append_n(str, start, ctx->data - start);
+               str_append_data(str, start, ctx->data - start);
                return rfc822_skip_lwsp(ctx);
        }
 
-       str_append_n(str, start, ctx->data - start);
+       str_append_data(str, start, ctx->data - start);
        return 0;
 }
 
@@ -304,11 +304,11 @@ rfc822_parse_atom_or_dot(struct rfc822_parser_context *ctx, string_t *str)
                if (IS_ATEXT(*ctx->data) || *ctx->data == '.')
                        continue;
 
-               str_append_n(str, start, ctx->data - start);
+               str_append_data(str, start, ctx->data - start);
                return rfc822_skip_lwsp(ctx);
        }
 
-       str_append_n(str, start, ctx->data - start);
+       str_append_data(str, start, ctx->data - start);
        return 0;
 }
 
index 42702cba348bc7d54b31dcbeac4086d45b23c402..ed4e07b5b279ce3379aa2535bad3cc2da8fb5954 100644 (file)
@@ -68,7 +68,7 @@ static void test_istream_dot_one(const struct dot_test *test,
                                test_assert(ret > 0);
 
                                data = i_stream_get_data(input, &size);
-                               str_append_n(str, data, size);
+                               str_append_data(str, data, size);
                                i_stream_skip(input, size);
                        }
                }
@@ -91,7 +91,7 @@ static void test_istream_dot_one(const struct dot_test *test,
 
                data = i_stream_get_data(input, &size);
                if (size > 0)
-                       str_append_n(str, data, size);
+                       str_append_data(str, data, size);
        }
        test_assert(input->stream_errno == 0);
        test_assert(str_len(str) == output_len);
index c4db34d81ad2579a2b520261571e313af86a44cb..1c20e111421103139d9734bd946f36a9c6eaf5fa 100644 (file)
@@ -243,7 +243,7 @@ static void test_istream_filter_large_buffer(void)
                                break;
                        if (ret == -2) {
                                data = i_stream_get_data(filter, &size);
-                               str_append_n(output, data, size);
+                               str_append_data(output, data, size);
                                i_stream_skip(filter, size);
                        }
                }
@@ -252,7 +252,7 @@ static void test_istream_filter_large_buffer(void)
 
                data = i_stream_get_data(filter, &size);
                test_assert(size <= 8192);
-               str_append_n(output, data, size);
+               str_append_data(output, data, size);
 
                p = strstr(str_c(input), "To: ");
                i_assert(p != NULL);
@@ -311,7 +311,7 @@ static void test_istream_filter_large_buffer2(void)
 
        for (i = 0; i < 2; i++) {
                while ((ret = i_stream_read_more(filter, &data, &size)) > 0) {
-                       str_append_n(output, data, size);
+                       str_append_data(output, data, size);
                        i_stream_skip(filter, size);
                }
                test_assert(ret == -1);
@@ -473,7 +473,7 @@ static void test_istream_end_body_with_lf(void)
 
                data = i_stream_get_data(filter, &size);
                if (size > 0)
-                       str_append_n(str, data, size);
+                       str_append_data(str, data, size);
                i_stream_skip(filter, size);
        }
        test_istream_set_size(istream, input_len);
@@ -482,7 +482,7 @@ static void test_istream_end_body_with_lf(void)
        test_assert(i_stream_read(filter) == -1);
 
        data = i_stream_get_data(filter, &size);
-       str_append_n(str, data, size);
+       str_append_data(str, data, size);
        test_assert(strcmp(str_c(str), output) == 0);
 
        i_stream_unref(&filter);
index d14feec65a83a126486b78350b560d026dc9e7ba..78798256486da9ae05d99014a102f5f7459bc371 100644 (file)
@@ -40,7 +40,7 @@ decode_test(const char *qp_input, const char *output, int stream_errno,
        for (i = 1; i <= qp_input_len; i++) {
                test_istream_set_size(input_data, i);
                while ((ret = i_stream_read_more(input, &data, &size)) > 0) {
-                       str_append_n(str, data, size);
+                       str_append_data(str, data, size);
                        i_stream_skip(input, size);
                }
                if (ret == -1 && stream_errno != 0)
@@ -50,7 +50,7 @@ decode_test(const char *qp_input, const char *output, int stream_errno,
        if (ret == 0) {
                test_istream_set_allow_eof(input_data, TRUE);
                while ((ret = i_stream_read_more(input, &data, &size)) > 0) {
-                       str_append_n(str, data, size);
+                       str_append_data(str, data, size);
                        i_stream_skip(input, size);
                }
        }
index effffb47f0e97fb38291853486d82470a7db3f8c..fb4e5fa77c4d49c230e616c1466b0a26dd363912 100644 (file)
@@ -84,7 +84,7 @@ encode_test(const char *qp_input, const char *output, int stream_errno,
        for (i = 1; i <= qp_input_len; i++) {
                test_istream_set_size(input_data, i);
                while ((ret = i_stream_read_more(input, &data, &size)) > 0) {
-                       str_append_n(str, data, size);
+                       str_append_data(str, data, size);
                        i_stream_skip(input, size);
                }
                if (ret == -1 && stream_errno != 0)
@@ -94,7 +94,7 @@ encode_test(const char *qp_input, const char *output, int stream_errno,
        if (ret == 0) {
                test_istream_set_allow_eof(input_data, TRUE);
                while ((ret = i_stream_read_more(input, &data, &size)) > 0) {
-                       str_append_n(str, data, size);
+                       str_append_data(str, data, size);
                        i_stream_skip(input, size);
                }
        }
index 0869b64d33c0aceccd36d12d297d830f7fbb3dee..8603e937cce997119b03afcf84dbe8d784d03382 100644 (file)
@@ -155,9 +155,9 @@ static void hdr_write(string_t *str, struct message_header_line *hdr)
        if (!hdr->continued) {
                str_append(str, hdr->name);
                if (hdr->middle_len > 0)
-                       str_append_n(str, hdr->middle, hdr->middle_len);
+                       str_append_data(str, hdr->middle, hdr->middle_len);
        }
-       str_append_n(str, hdr->value, hdr->value_len);
+       str_append_data(str, hdr->value, hdr->value_len);
        if (!hdr->no_newline) {
                if (hdr->crlf_newline)
                        str_append_c(str, '\r');
index bdfb6ea127d34b496b34c589fa67edc1ae3c1f63..373ff01eb01d841c3d4f13a5162b51be526b1ba9 100644 (file)
@@ -119,7 +119,7 @@ static void test_message_parser_small_blocks(void)
                if (block.hdr != NULL)
                        message_header_line_write(output, block.hdr);
                else if (block.size > 0)
-                       str_append_n(output, block.data, block.size);
+                       str_append_data(output, block.data, block.size);
        }
 
        test_assert(ret < 0);
index 9980e223df9b28e2d11a77ff373b5c23bd2237bb..460ffe1e5e70ad7499664b63d146bb550b29d666 100644 (file)
@@ -2200,7 +2200,7 @@ const char *settings_section_escape(const char *name)
                return name;
 
        str = t_str_new(i + strlen(name+i) + 8);
-       str_append_n(str, name, i);
+       str_append_data(str, name, i);
        for (; name[i] != '\0'; i++) {
                switch (name[i]) {
                case '=':
index d93bea14745dc0c9a49d87e8cb6a005ee70ced8b..731d2a9606fec772b0ad4863d3819658fb57a5de 100644 (file)
@@ -250,7 +250,7 @@ prevfile:
                        len--;
                        while (IS_WHITE(line[len-1]))
                                len--;
-                       str_append_n(full_line, line, len);
+                       str_append_data(full_line, line, len);
                        str_append_c(full_line, ' ');
                        continue;
                }
index 293f7e520a6581052892684c94087773e594952e..bb31d34a67781777f6075ab99b90bc8f39d00396 100644 (file)
@@ -523,7 +523,7 @@ void smtp_address_write(string_t *out,
                        str_insert(out, begin, "\"");
                }
 
-               str_append_n(out, pblock, p - pblock);
+               str_append_data(out, pblock, p - pblock);
                if (p >= pend)
                        break;
 
index 1dad0689f32a1df96057980c69755a1234f7919b..8bddc9944eaa2f4c0c72c18b7a966b56a52b5b2d 100644 (file)
@@ -156,7 +156,7 @@ smtp_parser_parse_ldh_str(struct smtp_parser *parser,
 
        parser->cur = palnum+1;
        if (out != NULL)
-               str_append_n(out, pbegin, parser->cur - pbegin);
+               str_append_data(out, pbegin, parser->cur - pbegin);
        return 1;
 }
 
@@ -250,7 +250,7 @@ smtp_parser_parse_snum(struct smtp_parser *parser, string_t *literal,
        } while (*parser->cur >= '0' && *parser->cur <= '9');
 
        if (literal != NULL)
-               str_append_n(literal, pbegin, parser->cur - pbegin);
+               str_append_data(literal, pbegin, parser->cur - pbegin);
        *octet_r = octet;
        return 1;
 }
@@ -377,7 +377,7 @@ int smtp_parser_parse_address_literal(struct smtp_parser *parser,
                        return -1;
                }
                if (value_r != NULL)
-                       str_append_n(value, pblock, parser->cur - pblock);
+                       str_append_data(value, pblock, parser->cur - pblock);
 
                if (ipv6) {
                        i_zero(&ip6);
@@ -446,7 +446,7 @@ int smtp_parser_parse_quoted_string(struct smtp_parser *parser,
                }
 
                if (value_r != NULL)
-                       str_append_n(value, pbegin, parser->cur - pbegin);
+                       str_append_data(value, pbegin, parser->cur - pbegin);
 
                if (parser->cur >= parser->end || *parser->cur != '\\')
                        break;
@@ -563,7 +563,7 @@ int smtp_parser_parse_xtext(struct smtp_parser *parser,
                        parser->cur++;
 
                if (out != NULL)
-                       str_append_n(out, pbegin, parser->cur - pbegin);
+                       str_append_data(out, pbegin, parser->cur - pbegin);
 
                if (parser->cur >= parser->end || *parser->cur != '+')
                        break;
index 06c379011e73d12cf6decd3e655ddb544fb60c88..7d086c28104d5c4167ecf26aaa6a6e21f800bb90 100644 (file)
@@ -166,7 +166,7 @@ static int smtp_reply_parse_code
        if (str_len(parser->strbuf) + (parser->cur-first) > 3)
                return -1;
 
-       str_append_n(parser->strbuf, first, parser->cur - first);
+       str_append_data(parser->strbuf, first, parser->cur - first);
        if (parser->cur == parser->end)
                return 0;
        if (str_len(parser->strbuf) != 3)
@@ -195,7 +195,7 @@ static int smtp_reply_parse_textstring(struct smtp_reply_parser *parser)
                return -1;
        }
 
-       str_append_n(parser->strbuf, first, parser->cur - first);
+       str_append_data(parser->strbuf, first, parser->cur - first);
        if (parser->cur == parser->end)
                return 0;
        return 1;
@@ -217,7 +217,7 @@ static int smtp_reply_parse_ehlo_domain(struct smtp_reply_parser *parser)
                        "Reply exceeds size limit");
                return -1;
        }
-       str_append_n(parser->strbuf, first, parser->cur - first);
+       str_append_data(parser->strbuf, first, parser->cur - first);
        if (parser->cur == parser->end)
                return 0;
        return 1;
@@ -249,7 +249,7 @@ static int smtp_reply_parse_ehlo_greet(struct smtp_reply_parser *parser)
                        }
 
                        /* sanitize bad characters */
-                       str_append_n(parser->strbuf,
+                       str_append_data(parser->strbuf,
                                first, parser->cur - first);
 
                        if (parser->cur == parser->end)
index 2ad013ca0cd71c38bba0526025395eb85b4edb94..d5c4e0c658bb0baf2c606ae1bc9d3b538b51da53 100644 (file)
@@ -196,9 +196,9 @@ void smtp_server_reply_add_text(struct smtp_server_reply *reply,
                        text = NULL;
                } else {
                        if (p > text && *(p-1) == '\r')
-                               str_append_n(textbuf, text, p - text - 1);
+                               str_append_data(textbuf, text, p - text - 1);
                        else
-                               str_append_n(textbuf, text, p - text);
+                               str_append_data(textbuf, text, p - text);
                        text = p + 1;
                }
                str_append(textbuf, "\r\n");
@@ -382,7 +382,7 @@ const char *smtp_server_reply_get_one_line(struct smtp_server_reply *reply)
        for (;;) {
                p = strchr(text, '\n');
                i_assert(p != NULL && p > text && *(p-1) == '\r');
-               str_append_n(str, text, p - text - 1);
+               str_append_data(str, text, p - text - 1);
                line_len = (size_t)(p - text) + 1;
                i_assert(text_len >= line_len);
                text_len -= line_len;
index d3f0ca8a9a8f020d5c2beb61ca22d04b5a11f44e..9088184d85a7afe993ee41eede1444ebc26d3ffd 100644 (file)
@@ -58,7 +58,7 @@ void smtp_string_write(string_t *out, const char *value)
                        str_insert(out, begin, "\"");
                }
 
-               str_append_n(out, pblock, p-pblock);
+               str_append_data(out, pblock, p-pblock);
                if (p >= pend)
                        break;
 
@@ -129,7 +129,7 @@ void smtp_xtext_encode(string_t *out, const unsigned char *data,
                while (p < pend && smtp_char_is_xtext(*p))
                        p++;
 
-               str_append_n(out, pbegin, p-pbegin);
+               str_append_data(out, pbegin, p-pbegin);
                if (p >= pend)
                        break;
 
index a9653646b689cdadc960efc4de99c120c0e0b3cb..e51aa43ad3e4575349718ab164c6edddab382c07 100644 (file)
@@ -340,7 +340,7 @@ void index_mail_parse_header(struct message_part *part,
                data->parse_line.start_pos = str_len(mail->header_data);
                data->parse_line.line_num = data->parse_line_num;
                str_append(mail->header_data, hdr->name);
-               str_append_n(mail->header_data, hdr->middle, hdr->middle_len);
+               str_append_data(mail->header_data, hdr->middle, hdr->middle_len);
 
                /* remember that we saw this header so we don't add it to
                   cache as nonexistent. */
index a7678849382d5f736b87fe85c4383fcff2e7a6c8..eb9d97222b1061dcfa9ec010d229a7db2f5fd7ce 100644 (file)
@@ -1291,7 +1291,7 @@ static int maildir_uidlist_write_fd(struct maildir_uidlist *uidlist, int fd,
                                i_assert(MAILDIR_UIDLIST_REC_EXT_KEY_IS_VALID(*p));
                                len = strlen((const char *)p);
                                str_append_c(str, ' ');
-                               str_append_n(str, p, len);
+                               str_append_data(str, p, len);
                                p += len + 1;
                        }
                }
@@ -1300,7 +1300,7 @@ static int maildir_uidlist_write_fd(struct maildir_uidlist *uidlist, int fd,
                if (strp == NULL)
                        str_append(str, rec->filename);
                else
-                       str_append_n(str, rec->filename, strp - rec->filename);
+                       str_append_data(str, rec->filename, strp - rec->filename);
                str_append_c(str, '\n');
                o_stream_nsend(output, str_data(str), str_len(str));
        }
index a6835445254ab3b4f180824860158db85ce2a58f..f5f45f88d91d3a8dc8360296464d30682d35861a 100644 (file)
@@ -263,7 +263,7 @@ mbox_save_append_keyword_headers(struct mbox_save_context *ctx,
        }
 
        memset(space, ' ', sizeof(space));
-       str_append_n(ctx->headers, space, sizeof(space));
+       str_append_data(ctx->headers, space, sizeof(space));
        ctx->space_end_idx = str_len(ctx->headers);
        str_append_c(ctx->headers, '\n');
 }
index 8b7d2a6904a1b0cfed65d8ddf0991712a7921f0b..7257b0d885bd76738d6f398b44670376900da4e0 100644 (file)
@@ -284,8 +284,8 @@ static bool parse_x_keywords_real(struct mbox_sync_mail_context *ctx,
                }
 
                str_truncate(keyword, 0);
-               str_append_n(keyword, hdr->full_value + keyword_start,
-                            pos - keyword_start);
+               str_append_data(keyword, hdr->full_value + keyword_start,
+                               pos - keyword_start);
                if (!mail_index_keyword_lookup(box->index, str_c(keyword),
                                               &idx)) {
                        /* keyword wasn't found. that means the sent mail
@@ -488,7 +488,7 @@ int mbox_sync_parse_next_mail(struct istream *input,
                if (!hdr->continued) {
                        line_start_pos = str_len(ctx->header);
                        str_append(ctx->header, hdr->name);
-                       str_append_n(ctx->header, hdr->middle, hdr->middle_len);
+                       str_append_data(ctx->header, hdr->middle, hdr->middle_len);
                }
 
                func = bsearch(hdr->name, header_funcs,
index 43467b981638ba3183de2dd4d0df8bd6f0780854..04bbbee75074bff2f803a11fda31e3357cec0de4 100644 (file)
@@ -253,7 +253,7 @@ int mailbox_attribute_value_to_string(struct mail_storage *storage,
                                "Attribute string value has NULs");
                        return -1;
                }
-               str_append_n(str, data, size);
+               str_append_data(str, data, size);
                i_stream_skip(value->value_stream, size);
        }
        if (value->value_stream->stream_errno != 0) {
index f482dab14e9c80cd952a518b71bdecad3c526acd..37aac9810402dc6f793e1f83167d2200103e65a3 100644 (file)
@@ -483,7 +483,7 @@ mailbox_list_escape_name_params(const char *vname, const char *ns_prefix,
 
        /* no escaping of namespace prefix */
        if (str_begins(vname, ns_prefix)) {
-               str_append_n(escaped_name, vname, ns_prefix_len);
+               str_append_data(escaped_name, vname, ns_prefix_len);
                vname += ns_prefix_len;
        }
 
@@ -658,7 +658,7 @@ mailbox_list_unescape_name_params(const char *src, const char *ns_prefix,
        unsigned int num;
 
        if (str_begins(src, ns_prefix)) {
-               str_append_n(dest, src, ns_prefix_len);
+               str_append_data(dest, src, ns_prefix_len);
                src += ns_prefix_len;
        }
 
index 457f58c1818d0760e6d5593a4aa6d57540b3b708..bd76d2c1d3ca30404fde14c7db8bce0632d53adc 100644 (file)
@@ -104,7 +104,7 @@ mailbox_tree_traverse(struct mailbox_tree_context *tree, const char *path,
                        continue;
 
                str_truncate(str, 0);
-               str_append_n(str, name, (size_t) (path - name));
+               str_append_data(str, name, (size_t) (path - name));
                name = str_c(str);
 
                /* find the node */
index 078b0ed0158864357ffc785ef9faa8435c00779e..f8a8364e181dcf93b91908940f168bcd95824c3a 100644 (file)
@@ -613,7 +613,7 @@ static int internal_send_split(string_t *full_str, size_t prefix_len)
        size_t max_text_len, pos = prefix_len;
 
        str = t_str_new(PIPE_BUF);
-       str_append_n(str, str_c(full_str), prefix_len);
+       str_append_data(str, str_data(full_str), prefix_len);
        max_text_len = PIPE_BUF - prefix_len - 1;
 
        while (pos < str_len(full_str)) {
index ec71b56faa119cd13f1b6f95176f7cc1363c4e03..4be06c43286dc164e7849b898d751bf0c0494457 100644 (file)
@@ -333,16 +333,16 @@ static int try_create_lock_hardlink(struct lock_info *lock_info, bool write_pid,
                if (temp_prefix != NULL) {
                        if (*temp_prefix != '/' && p != NULL) {
                                /* add directory */
-                               str_append_n(tmp_path, lock_info->lock_path,
-                                            p - lock_info->lock_path);
+                               str_append_data(tmp_path, lock_info->lock_path,
+                                               p - lock_info->lock_path);
                                str_append_c(tmp_path, '/');
                        }
                        str_append(tmp_path, temp_prefix);
                } else {
                        if (p != NULL) {
                                /* add directory */
-                               str_append_n(tmp_path, lock_info->lock_path,
-                                            p - lock_info->lock_path);
+                               str_append_data(tmp_path, lock_info->lock_path,
+                                               p - lock_info->lock_path);
                                str_append_c(tmp_path, '/');
                        }
                        str_printfa(tmp_path, ".temp.%s.%s.",
index 0a8f3fd064c90d663c00ec03964fb18bb93560de..d3333f9f94e611bdde6e68c2ebd44f22c1108797 100644 (file)
@@ -577,8 +577,8 @@ static char *i_stream_next_line_finish(struct istream_private *stream, size_t i)
                if (stream->line_str == NULL)
                        stream->line_str = str_new(default_pool, 256);
                str_truncate(stream->line_str, 0);
-               str_append_n(stream->line_str, stream->buffer + stream->skip,
-                            end - stream->skip);
+               str_append_data(stream->line_str, stream->buffer + stream->skip,
+                               end - stream->skip);
                ret = str_c_modifiable(stream->line_str);
        }
 
index 15eb7035e032b8a9e75d26326ad446ff2c31e4b5..183ab081f1e1315ea050516b258cd546c913546d 100644 (file)
@@ -85,7 +85,7 @@ void str_sanitize_append(string_t *dest, const char *src, size_t max_bytes)
                if ((unsigned char)src[i] < 32)
                        str_append_c(dest, '?');
                else
-                       str_append_n(dest, src+i, len);
+                       str_append_data(dest, src+i, len);
                i += len;
        }
 
@@ -125,7 +125,7 @@ void str_sanitize_append_utf8(string_t *dest, const char *src,
                if ((unsigned char)src[i] < 32)
                        str_append(dest, UNICODE_REPLACEMENT_CHAR_UTF8);
                else
-                       str_append_n(dest, src+i, len);
+                       str_append_data(dest, src+i, len);
                i += len;
                c++;
        }
index 9af20ddba1e0470e004f61c95f4b2c905cae0aff..f32285b6b87c88b6ec0782a6bc30bc559a095df5 100644 (file)
@@ -145,7 +145,7 @@ const char *str_tabescape(const char *str)
        for (p = str; *p != '\0'; p++) {
                if (*p <= '\r') {
                        tmp = t_str_new(128);
-                       str_append_n(tmp, str, p-str);
+                       str_append_data(tmp, str, p-str);
                        str_append_tabescaped(tmp, p);
                        return str_c(tmp);
                }
index c89a9e1c882052781395ba400804487ebb5d2340..c5d4122146eb75127e4be0b28aae51946a793e4b 100644 (file)
@@ -222,7 +222,7 @@ static void test_link_alloc2(void)
        memset(buf, 'x', sizeof(buf));
        for (size_t i = 1; i <= sizeof(buf); i++) {
                str_truncate(basedir, base_len);
-               str_append_n(basedir, buf, i);
+               str_append_data(basedir, buf, i);
                tmpdir = str_c(basedir);
                (void)mkdir(str_c(basedir), 0700);
 
index 978b122cf6019d73cdba78e60b27f5df095119d9..4699e081ec3630eec0f7b1c62100627ae91ef2cd 100644 (file)
@@ -518,7 +518,7 @@ static int uri_do_parse_host_name(struct uri_parser *parser,
                                                break;
                                        if (host_name != NULL) {
                                                if (offset > part)
-                                                       str_append_n(host_name, part, offset - part);
+                                                       str_append_data(host_name, part, offset - part);
                                                str_append_c(host_name, ch);
                                        }
                                        part = parser->cur;
@@ -538,7 +538,7 @@ static int uri_do_parse_host_name(struct uri_parser *parser,
                }
 
                if (host_name != NULL && parser->cur > part)
-                       str_append_n(host_name, part, parser->cur - part);
+                       str_append_data(host_name, part, parser->cur - part);
 
                /* "." */
                if (parser->cur >= parser->end || ch != '.')
@@ -609,7 +609,7 @@ uri_parse_ip_literal(struct uri_parser *parser, string_t *literal,
        }
 
        if (literal != NULL)
-               str_append_n(literal, parser->cur, p-parser->cur+1);
+               str_append_data(literal, parser->cur, p-parser->cur+1);
        address = t_strdup_until(parser->cur+1, p);
        parser->cur = p + 1;    
 
@@ -1196,7 +1196,7 @@ void uri_data_encode(string_t *out,
                if ((*p & 0x80) != 0 || (esc_table[*p] & esc_mask) == 0 ||
                        (esc_extra != NULL && strchr(esc_extra, (char)*p) != NULL)) {
                        if ((p - pbegin) > 0)
-                               str_append_n(out, pbegin, p - pbegin);
+                               str_append_data(out, pbegin, p - pbegin);
                        str_printfa(out, "%%%02x", *p);
                        p++;
                        pbegin = p;
@@ -1205,7 +1205,7 @@ void uri_data_encode(string_t *out,
                }
        }
        if ((p - pbegin) > 0)
-               str_append_n(out, pbegin, p - pbegin);
+               str_append_data(out, pbegin, p - pbegin);
 }
 
 void uri_append_scheme(string_t *out, const char *scheme)
index 3fe496cef1296e90878a63d683a898a391270e28..9b412f4cbdbf7e757eaa0c81fe23ac2cbcb6d15f 100644 (file)
@@ -94,10 +94,10 @@ xml_encode_data(string_t *dest, const unsigned char *data, size_t len)
                                unsigned int char_len =
                                        uni_utf8_get_char_n(data + i, len - i, &chr);
                                if (char_len > 0 && is_valid_xml_char(chr))
-                                       str_append_n(dest, data + i, char_len);
+                                       str_append_data(dest, data + i, char_len);
                                else {
-                                       str_append_n(dest, utf8_replacement_char,
-                                                    UTF8_REPLACEMENT_CHAR_LEN);
+                                       str_append_data(dest, utf8_replacement_char,
+                                                       UTF8_REPLACEMENT_CHAR_LEN);
                                }
                                i += char_len - 1;
                        } else {
index 033cb80071a8ea1febc7805c94b20e953cc96aa6..95f41f08673b71f38ef764aadd78d4077cb5d497 100644 (file)
@@ -120,10 +120,10 @@ xml_encode_data_max(string_t *dest, const unsigned char *data, size_t len,
                                unsigned int char_len =
                                        uni_utf8_get_char_n(data + i, len - i, &chr);
                                if (char_len > 0 && is_valid_xml_char(chr))
-                                       str_append_n(dest, data + i, char_len);
+                                       str_append_data(dest, data + i, char_len);
                                else {
-                                       str_append_n(dest, utf8_replacement_char,
-                                                    UTF8_REPLACEMENT_CHAR_LEN);
+                                       str_append_data(dest, utf8_replacement_char,
+                                                       UTF8_REPLACEMENT_CHAR_LEN);
                                }
                                i += char_len - 1;
                        } else {