]> source.dussan.org Git - rspamd.git/commitdiff
[Fix] Allow to call fstring append with NULL string
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 2 Oct 2018 15:59:57 +0000 (16:59 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 2 Oct 2018 15:59:57 +0000 (16:59 +0100)
src/libutil/fstring.c

index 6c51ad62e94d0e07b2f5d8ea0044110d907fe773..fac3b364b48df3faad40a4324a19a88fa6884106 100644 (file)
@@ -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;
 }