Browse Source

[Fix] Fix fold_after case to preserve multiple spaces

tags/1.7.3
Vsevolod Stakhov 6 years ago
parent
commit
e12505a147
1 changed files with 20 additions and 0 deletions
  1. 20
    0
      src/libutil/str_util.c

+ 20
- 0
src/libutil/str_util.c View File

@@ -1028,9 +1028,23 @@ rspamd_header_value_fold (const gchar *name,
case fold_token:
/* Here, we have token start at 'c' and token end at 'p' */
if (fold_type == fold_after) {
guint nspaces = 0;
const gchar *last;

if (p > c) {
g_string_append_len (res, c, p - c);

/*
* Check any spaces that are appended to the result
* before folding
*/
last = &res->str[res->len - 1];

while (g_ascii_isspace (*last)) {
last --;
nspaces ++;
res->len --;
}
}

switch (how) {
@@ -1051,6 +1065,12 @@ rspamd_header_value_fold (const gchar *name,
p ++;
}

/* Move leftover spaces */
while (nspaces) {
g_string_append_c (res, ' ');
nspaces --;
}

cur_len = 0;
}
else {

Loading…
Cancel
Save