From 35a237e24ca9c04826e995c4985476054e579836 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 19 Jul 2023 14:16:45 +1000 Subject: [PATCH] Fix a few gcc analyzer complaints in util-strings.* Sprinkle a few asserts into the various string helpers for where our arguments must not be NULL. Signed-off-by: Peter Hutterer --- src/util-strings.c | 11 +++++++++++ src/util-strings.h | 20 ++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/src/util-strings.c b/src/util-strings.c index d0a3fa01..1f9b8a74 100644 --- a/src/util-strings.c +++ b/src/util-strings.c @@ -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; diff --git a/src/util-strings.h b/src/util-strings.h index 4d11a0f0..b0916815 100644 --- a/src/util-strings.h +++ b/src/util-strings.h @@ -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; -- 2.34.1