diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2017-12-16 00:46:50 +0100 |
---|---|---|
committer | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2017-12-17 21:57:55 +0000 |
commit | 937ddea6cce45f3f6dcb8177ea86162f15ecb5f9 (patch) | |
tree | b372bd4d3cc5b09a3e5f80e658a7fbc74579d314 /src | |
parent | e5a2bdbc5501b892605a6a1fe7e30fb2f1546d42 (diff) |
utils: add osmo_separated_identifiers_valid()
For validating CTRL input, we want to verify that an input variable is a series
of valid osmo_identifier_valid() separated by dots. Allow validating any
additional chars with identifiers, for CTRL vars will be just ".".
Change-Id: I13dfd02c8c870620f937d789873ad84c6b1c45de
Diffstat (limited to 'src')
-rw-r--r-- | src/utils.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/utils.c b/src/utils.c index 8f56227e..6cc823e0 100644 --- a/src/utils.c +++ b/src/utils.c @@ -428,19 +428,23 @@ bool osmo_is_hexstr(const char *str, int min_digits, int max_digits, /*! Determine if a given identifier is valid, i.e. doesn't contain illegal chars * \param[in] str String to validate - * \returns true in case string contains valid identifier, false otherwise + * \param[in] sep_chars Permitted separation characters between identifiers. + * \returns true in case \a str contains only valid identifiers and sep_chars, false otherwise */ -bool osmo_identifier_valid(const char *str) +bool osmo_separated_identifiers_valid(const char *str, const char *sep_chars) { /* characters that are illegal in names */ static const char illegal_chars[] = "., {}[]()<>|~\\^`'\"?=;/+*&%$#!"; unsigned int i; + size_t len; /* an empty string is not a valid identifier */ - if (!str || strlen(str) == 0) + if (!str || (len = strlen(str)) == 0) return false; - for (i = 0; i < strlen(str); i++) { + for (i = 0; i < len; i++) { + if (sep_chars && strchr(sep_chars, str[i])) + continue; /* check for 7-bit ASCII */ if (str[i] & 0x80) return false; @@ -454,4 +458,13 @@ bool osmo_identifier_valid(const char *str) return true; } +/*! Determine if a given identifier is valid, i.e. doesn't contain illegal chars + * \param[in] str String to validate + * \returns true in case \a str contains valid identifier, false otherwise + */ +bool osmo_identifier_valid(const char *str) +{ + return osmo_separated_identifiers_valid(str, NULL); +} + /*! @} */ |