diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2018-10-02 16:59:57 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2018-10-02 16:59:57 +0100 |
commit | 2fd553b3902e7d8772c90af0b0f20824002b38af (patch) | |
tree | 88ff95b10943f736632a0ceac47073e18384d6fd /src | |
parent | 4c9f6b21186be5c87785d5f6c91fb26cb8300b5b (diff) | |
download | rspamd-2fd553b3902e7d8772c90af0b0f20824002b38af.tar.gz rspamd-2fd553b3902e7d8772c90af0b0f20824002b38af.zip |
[Fix] Allow to call fstring append with NULL string
Diffstat (limited to 'src')
-rw-r--r-- | src/libutil/fstring.c | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/src/libutil/fstring.c b/src/libutil/fstring.c index 6c51ad62e..fac3b364b 100644 --- a/src/libutil/fstring.c +++ b/src/libutil/fstring.c @@ -160,14 +160,19 @@ rspamd_fstring_grow (rspamd_fstring_t *str, gsize needed_len) rspamd_fstring_t * rspamd_fstring_append (rspamd_fstring_t *str, const char *in, gsize len) { - gsize avail = fstravail (str); - - if (avail < len) { - str = rspamd_fstring_grow (str, len); + if (str == NULL) { + str = rspamd_fstring_new_init (in, len); } + else { + gsize avail = fstravail (str); + + if (avail < len) { + str = rspamd_fstring_grow (str, len); + } - memcpy (str->str + str->len, in, len); - str->len += len; + memcpy (str->str + str->len, in, len); + str->len += len; + } return str; } @@ -176,14 +181,22 @@ rspamd_fstring_t * rspamd_fstring_append_chars (rspamd_fstring_t *str, char c, gsize len) { - gsize avail = fstravail (str); + if (str == NULL) { + str = rspamd_fstring_sized_new (len); - if (avail < len) { - str = rspamd_fstring_grow (str, len); + memset (str->str + str->len, c, len); + str->len += len; } + else { + gsize avail = fstravail (str); - memset (str->str + str->len, c, len); - str->len += len; + if (avail < len) { + str = rspamd_fstring_grow (str, len); + } + + memset (str->str + str->len, c, len); + str->len += len; + } return str; } |