This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Vadim Yanitskiy gerrit-no-reply at lists.osmocom.orgVadim Yanitskiy has uploaded this change for review. ( https://gerrit.osmocom.org/13535 Change subject: ipaccess-config: use POSIX regex for Unit ID format check ...................................................................... ipaccess-config: use POSIX regex for Unit ID format check Instead of counting digits and slashes of the IPA Unit ID manually, use POSIX regex functions, so the code is easier to maintain and read. As a bonus, this fixes CID#188854: variable 'remain_slash' was of type 'uint8_t', so it could never be lower than zero. Change-Id: Id613bf650833dd38eaad08fdfffdf8dbe2f002b1 Related: CID#188854 Unsigned integer overflow --- M src/ipaccess/ipaccess-config.c 1 file changed, 9 insertions(+), 21 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/35/13535/1 diff --git a/src/ipaccess/ipaccess-config.c b/src/ipaccess/ipaccess-config.c index da19ce2..54e4efd 100644 --- a/src/ipaccess/ipaccess-config.c +++ b/src/ipaccess/ipaccess-config.c @@ -27,6 +27,7 @@ #include <getopt.h> #include <errno.h> #include <ctype.h> +#include <regex.h> #include <inttypes.h> #include <sys/fcntl.h> #include <sys/stat.h> @@ -842,33 +843,20 @@ static bool check_unitid_fmt(const char* unit_id) { - const char *p = unit_id; - bool must_digit = true; - uint8_t remain_slash = 2; + regex_t regexp; + int rc; if (strlen(unit_id) < 5) goto wrong_fmt; - while (*p != '\0') { - if (*p != '/' && !isdigit(*p)) - goto wrong_fmt; - if (*p == '/' && must_digit) - goto wrong_fmt; - if (*p == '/') { - must_digit = true; - remain_slash--; - if (remain_slash < 0) - goto wrong_fmt; - } else { - must_digit = false; - } - p++; - } + rc = regcomp(®exp, "^[0-9]+/[0-9]+/[0-9]+$", REG_EXTENDED | REG_NOSUB); + OSMO_ASSERT(!rc); - if (*(p-1) == '/') - goto wrong_fmt; + rc = regexec(®exp, unit_id, 0, NULL, 0); + regfree(®exp); - return true; + if (rc == 0) + return true; wrong_fmt: fprintf(stderr, "ERROR: unit-id wrong format. Must be '\\d+/\\d+/\\d+'\n"); -- To view, visit https://gerrit.osmocom.org/13535 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: Id613bf650833dd38eaad08fdfffdf8dbe2f002b1 Gerrit-Change-Number: 13535 Gerrit-PatchSet: 1 Gerrit-Owner: Vadim Yanitskiy <axilirator at gmail.com> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190406/ae188360/attachment.htm>