]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
liblib: *_strndup() and *_strconcat() shouldn't pass through NULLs.
authorBaofeng Wang <baofeng.wang@dovecot.fi>
Wed, 20 Apr 2016 14:28:24 +0000 (17:28 +0300)
committerBaofeng Wang <baofeng.wang@dovecot.fi>
Fri, 3 Jun 2016 11:32:24 +0000 (14:32 +0300)
Assert NULL string pointer in below functions:
i_strndup(), t_strndup() and p_strconcat(), t_strconcat(), i_strconcat() and
vstrconcat.
Replace former NULL condition check accordingly.

src/lib/imem.c
src/lib/strfuncs.c

index 847599cded400943876e69f70ef169192300b766..608594e46cbea6443835ac0960ca8a1aa610ae60 100644 (file)
@@ -31,6 +31,7 @@ char *i_strdup_until(const void *str, const void *end)
 
 char *i_strndup(const void *str, size_t max_chars)
 {
+       i_assert(str != NULL);
        return p_strndup(default_pool, str, max_chars);
 }
 
@@ -56,6 +57,8 @@ char *i_strconcat(const char *str1, ...)
        char *ret;
        size_t len;
 
+       i_assert(str1 != NULL);
+
        va_start(args, str1);
 
        T_BEGIN {
index d8d3bc4fc4fe814a4fb922e2994d55396a9a1857..aa293f906fbc8b8d201551f61057b89532fe864f 100644 (file)
@@ -86,11 +86,9 @@ char *p_strndup(pool_t pool, const void *str, size_t max_chars)
        char *mem;
        size_t len;
 
+       i_assert(str != NULL);
        i_assert(max_chars != (size_t)-1);
 
-       if (str == NULL)
-               return NULL;
-
        len = 0;
        while (len < max_chars && ((const char *) str)[len] != '\0')
                len++;
@@ -175,8 +173,7 @@ char *vstrconcat(const char *str1, va_list args, size_t *ret_len)
         char *temp;
        size_t bufsize, i, len;
 
-       if (str1 == NULL)
-               return NULL;
+       i_assert(str1 != NULL);
 
        str = str1;
        bufsize = STRCONCAT_BUFSIZE;
@@ -211,6 +208,8 @@ char *p_strconcat(pool_t pool, const char *str1, ...)
        char *temp, *ret;
         size_t len;
 
+       i_assert(str1 != NULL);
+
        va_start(args, str1);
 
        if (pool->datastack_pool) {
@@ -256,6 +255,7 @@ const char *t_strdup_until(const void *start, const void *end)
 
 const char *t_strndup(const void *str, size_t max_chars)
 {
+       i_assert(str != NULL);
        return p_strndup(unsafe_data_stack_pool, str, max_chars);
 }
 
@@ -282,6 +282,8 @@ const char *t_strconcat(const char *str1, ...)
        const char *ret;
         size_t len;
 
+       i_assert(str1 != NULL);
+
        va_start(args, str1);
 
        ret = vstrconcat(str1, args, &len);