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 <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer 2023-07-19 14:16:45 +10:00
parent 2ebb6f629f
commit 35a237e24c
2 changed files with 31 additions and 0 deletions

View 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;

View 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;