From: Arran Cudbard-Bell Date: Sun, 4 Sep 2022 04:34:02 +0000 (-0400) Subject: Move regex_flag_parse to fr_slen_t X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=92a26288ba19c10d59658c820f0442dfe0e38e20;p=thirdparty%2Ffreeradius-server.git Move regex_flag_parse to fr_slen_t --- diff --git a/src/lib/util/regex.c b/src/lib/util/regex.c index ec6f6611321..a85cc639c93 100644 --- a/src/lib/util/regex.c +++ b/src/lib/util/regex.c @@ -1270,8 +1270,8 @@ fr_regmatch_t *regex_match_data_alloc(TALLOC_CTX *ctx, uint32_t count) * - > 0 on success. The number of flag bytes parsed. * - <= 0 on failure. Negative offset of first unrecognised flag. */ -ssize_t regex_flags_parse(int *err, fr_regex_flags_t *out, fr_sbuff_t *in, - fr_sbuff_term_t const *terminals, bool err_on_dup) +fr_slen_t regex_flags_parse(int *err, fr_regex_flags_t *out, fr_sbuff_t *in, + fr_sbuff_term_t const *terminals, bool err_on_dup) { fr_sbuff_t our_in = FR_SBUFF(in); @@ -1284,7 +1284,7 @@ ssize_t regex_flags_parse(int *err, fr_regex_flags_t *out, fr_sbuff_t *in, if (err_on_dup && out->_f) { \ fr_strerror_printf("Duplicate regex flag '%c'", *our_in.p); \ if (err) *err = -2; \ - return -fr_sbuff_used(&our_in); \ + return fr_sbuff_error(&our_in); \ } \ out->_f = 1; \ break @@ -1302,7 +1302,7 @@ ssize_t regex_flags_parse(int *err, fr_regex_flags_t *out, fr_sbuff_t *in, fr_strerror_printf("Unsupported regex flag '%c'", *our_in.p); if (err) *err = -1; - return -(fr_sbuff_used_total(&our_in)); + return fr_sbuff_error(&our_in); } fr_sbuff_advance(&our_in, 1); } diff --git a/src/tests/unit/condition/regex.txt b/src/tests/unit/condition/regex.txt index aadc5ed0b17..fdc04845844 100644 --- a/src/tests/unit/condition/regex.txt +++ b/src/tests/unit/condition/regex.txt @@ -37,13 +37,13 @@ condition foo =~ /bar/im match 'foo' =~ /bar/im condition foo =~ /bar/ima -match ERROR offset 14: Unsupported regex flag 'a' +match ERROR offset 15: Unsupported regex flag 'a' condition foo =~ /bar/ii -match ERROR offset 13: Duplicate regex flag 'i' +match ERROR offset 14: Duplicate regex flag 'i' condition foo =~ /bar/iia -match ERROR offset 13: Duplicate regex flag 'i' +match ERROR offset 14: Duplicate regex flag 'i' # # Escape the backslashes correctly diff --git a/src/tests/unit/xlat/cond_regex.txt b/src/tests/unit/xlat/cond_regex.txt index 064146e54e8..d24ae43cfb4 100644 --- a/src/tests/unit/xlat/cond_regex.txt +++ b/src/tests/unit/xlat/cond_regex.txt @@ -32,13 +32,13 @@ xlat_purify &User-Name =~ /bar/im match (&User-Name =~ /bar/im) xlat_purify &User-Name =~ /bar/ima -match ERROR offset 21: Unsupported regex flag 'a' +match ERROR offset 22: Unsupported regex flag 'a' xlat_purify &User-Name =~ /bar/ii -match ERROR offset 20: Duplicate regex flag 'i' +match ERROR offset 21: Duplicate regex flag 'i' xlat_purify &User-Name =~ /bar/iia -match ERROR offset 20: Duplicate regex flag 'i' +match ERROR offset 21: Duplicate regex flag 'i' # # Escape the backslashes correctly