From: Vsevolod Stakhov Date: Tue, 2 Oct 2018 15:59:57 +0000 (+0100) Subject: [Fix] Allow to call fstring append with NULL string X-Git-Tag: 1.8.1~105 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2fd553b3902e7d8772c90af0b0f20824002b38af;p=thirdparty%2Frspamd.git [Fix] Allow to call fstring append with NULL string --- diff --git a/src/libutil/fstring.c b/src/libutil/fstring.c index 6c51ad62e9..fac3b364b4 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; }