Skip to content

Commit

Permalink
global: Replace str_append_n() with str_append_data() wherever possible
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
sirainen committed Aug 30, 2018
1 parent 68087f1 commit 5b426a2
Show file tree
Hide file tree
Showing 50 changed files with 102 additions and 102 deletions.
2 changes: 1 addition & 1 deletion src/auth/auth-cache.c
Expand Up @@ -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, '}');
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/auth/db-dict-cache-key.c
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion src/auth/db-ldap.c
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion src/auth/password-scheme-md5crypt.c
Expand Up @@ -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);
Expand Down
4 changes: 2 additions & 2 deletions src/config/config-parser.c
Expand Up @@ -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) {
Expand Down Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion src/config/doveconf.c
Expand Up @@ -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') {
Expand Down
2 changes: 1 addition & 1 deletion src/lib-dict-backend/dict-ldap.c
Expand Up @@ -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)
Expand Down
4 changes: 2 additions & 2 deletions src/lib-dict/dict.c
Expand Up @@ -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) {
Expand Down Expand Up @@ -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 != '\\')
Expand Down
2 changes: 1 addition & 1 deletion src/lib-fs/fs-posix.c
Expand Up @@ -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, '/');
Expand Down
4 changes: 2 additions & 2 deletions src/lib-fs/fs-sis.c
Expand Up @@ -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",
Expand Down
8 changes: 4 additions & 4 deletions src/lib-fts/fts-tokenizer-address.c
Expand Up @@ -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;
}
Expand Down Expand Up @@ -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;
}
Expand Down
4 changes: 2 additions & 2 deletions src/lib-http/http-auth.c
Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion src/lib-http/http-header-parser.c
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion src/lib-http/http-parser.c
Expand Up @@ -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 == '"') {
Expand Down
2 changes: 1 addition & 1 deletion src/lib-http/http-url.c
Expand Up @@ -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 */
Expand Down
2 changes: 1 addition & 1 deletion src/lib-imap/imap-quote.c
Expand Up @@ -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;
}
Expand Down
6 changes: 3 additions & 3 deletions src/lib-imap/imap-url.c
Expand Up @@ -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= */
Expand All @@ -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);
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/lib-imap/imap-utf7.c
Expand Up @@ -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 == '&') {
Expand Down Expand Up @@ -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 == '-') {
Expand Down
2 changes: 1 addition & 1 deletion src/lib-mail/message-header-parser.c
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion src/lib-mail/message-snippet.c
Expand Up @@ -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')
Expand Down
16 changes: 8 additions & 8 deletions src/lib-mail/rfc822-parser.c
Expand Up @@ -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;
}

Expand All @@ -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;
Expand All @@ -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;
}

Expand All @@ -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;
}

Expand Down Expand Up @@ -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;
}

Expand Down
4 changes: 2 additions & 2 deletions src/lib-mail/test-istream-dot.c
Expand Up @@ -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);
}
}
Expand All @@ -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);
Expand Down
10 changes: 5 additions & 5 deletions src/lib-mail/test-istream-header-filter.c
Expand Up @@ -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);
}
}
Expand All @@ -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);
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand All @@ -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);
Expand Down
4 changes: 2 additions & 2 deletions src/lib-mail/test-istream-qp-decoder.c
Expand Up @@ -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)
Expand All @@ -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);
}
}
Expand Down

0 comments on commit 5b426a2

Please sign in to comment.