Fix a few gcc analyzer complaints in util-strings.*
authorPeter Hutterer <peter.hutterer@who-t.net>
Wed, 19 Jul 2023 04:16:45 +0000 (14:16 +1000)
committerJihoon Kim <jihoon48.kim@samsung.com>
Mon, 4 Dec 2023 10:23:27 +0000 (19:23 +0900)
Sprinkle a few asserts into the various string helpers for where our
arguments must not be NULL.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
src/util-strings.c
src/util-strings.h

index d0a3fa012e502d2749ee38358fb1ba39a4b52083..1f9b8a748422d902752da2428253384a0e2cba67 100644 (file)
@@ -39,6 +39,8 @@
 static const char *
 next_word(const char **state, size_t *len, const char *separators)
 {
+       assert(state != NULL);
+
        const char *next = *state;
        size_t l;
 
@@ -72,6 +74,7 @@ strv_from_argv(int argc, char **argv)
        char **strv = NULL;
 
        assert(argc >= 0);
+       assert(argv != NULL);
 
        if (argc == 0)
                return NULL;
@@ -109,6 +112,8 @@ char **
 strv_from_string(const char *in, const char *separators, size_t *num_elements)
 {
        assert(in != NULL);
+       assert(separators != NULL);
+       assert(num_elements != NULL);
 
        const char *s = in;
        size_t l, nelems = 0;
@@ -159,6 +164,8 @@ strv_from_string(const char *in, const char *separators, size_t *num_elements)
 char *
 strv_join(char **strv, const char *joiner)
 {
+       assert(strv != NULL);
+
        char **s;
        char *str;
        size_t slen = 0;
@@ -200,6 +207,8 @@ strv_join(char **strv, const char *joiner)
 const char *
 safe_basename(const char *filename)
 {
+       assert(filename != NULL);
+
        const char *basename;
 
        if (*filename == '\0')
@@ -229,6 +238,8 @@ safe_basename(const char *filename)
 char *
 trunkname(const char *filename)
 {
+       assert(filename != NULL);
+
        const char *base = safe_basename(filename);
        char *suffix;
 
index 4d11a0f0eac3c0483d02e84861b7cc42ef860cea..b09168152c3f855a0edf9ccdf2119fff2330fb05 100644 (file)
@@ -143,6 +143,8 @@ xvasprintf(char **strp, const char *fmt, va_list args)
 static inline bool
 safe_atoi_base(const char *str, int *val, int base)
 {
+       assert(str != NULL);
+
        char *endptr;
        long v;
 
@@ -167,12 +169,15 @@ safe_atoi_base(const char *str, int *val, int base)
 static inline bool
 safe_atoi(const char *str, int *val)
 {
+       assert(str != NULL);
        return safe_atoi_base(str, val, 10);
 }
 
 static inline bool
 safe_atou_base(const char *str, unsigned int *val, int base)
 {
+       assert(str != NULL);
+
        char *endptr;
        unsigned long v;
 
@@ -197,12 +202,15 @@ safe_atou_base(const char *str, unsigned int *val, int base)
 static inline bool
 safe_atou(const char *str, unsigned int *val)
 {
+       assert(str != NULL);
        return safe_atou_base(str, val, 10);
 }
 
 static inline bool
 safe_atod(const char *str, double *val)
 {
+       assert(str != NULL);
+
        char *endptr;
        double v;
 #ifdef HAVE_LOCALE_H
@@ -288,6 +296,10 @@ double_array_from_string(const char *in,
                         const char *separator,
                         size_t *length)
 {
+       assert(in != NULL);
+       assert(separator != NULL);
+       assert(length != NULL);
+
        double *result = NULL;
        *length = 0;
 
@@ -386,6 +398,8 @@ error:
 static inline char *
 strstrip(const char *input, const char *what)
 {
+       assert(input != NULL);
+
        char *str, *last;
 
        str = safe_strdup(&input[strspn(input, what)]);
@@ -409,6 +423,9 @@ strstrip(const char *input, const char *what)
 static inline bool
 strendswith(const char *str, const char *suffix)
 {
+       if (str == NULL)
+               return false;
+
        size_t slen = strlen(str);
        size_t suffixlen = strlen(suffix);
        size_t offset;
@@ -423,6 +440,9 @@ strendswith(const char *str, const char *suffix)
 static inline bool
 strstartswith(const char *str, const char *prefix)
 {
+       if (str == NULL)
+               return false;
+
        size_t prefixlen = strlen(prefix);
 
        return prefixlen > 0 ? strneq(str, prefix, strlen(prefix)) : false;