if (!rc) {
RDEBUG4("No subcapture data found");
*out = NULL;
- return 1;
+ return -1;
}
match_data = talloc_get_type_abort(rc->regmatch->match_data, pcre2_match_data);
if (!rc) {
RDEBUG4("No subcapture data found");
*out = NULL;
- return 1;
+ return -1;
}
match_data = rc->regmatch->match_data;
if (!rc) {
RDEBUG4("No subcapture data found");
*out = NULL;
- return 1;
+ return -1;
}
ret = pcre_get_substring(rc->regmatch->subject,
if (!rc) {
RDEBUG4("No subcapture data found");
*out = NULL;
- return 1;
+ return -1;
}
ret = pcre_get_named_substring(rc->preg->compiled, rc->regmatch->subject,
fr_value_box_t *vb;
char *p;
- if (regex_request_to_sub(ctx, &p, request, 0) < 0) return XLAT_ACTION_FAIL;
+ if (regex_request_to_sub(ctx, &p, request, 0) < 0) {
+ REDEBUG2("No previous regex capture");
+ return XLAT_ACTION_FAIL;
+ }
+
+ rad_assert(p);
MEM(vb = fr_value_box_alloc_null(ctx));
fr_value_box_bstrsteal(vb, vb, NULL, p, false);
return XLAT_ACTION_FAIL;
}
- if (regex_request_to_sub(ctx, &p, request, idx.vb_uint32) < 0) return XLAT_ACTION_FAIL;
+ if (regex_request_to_sub(ctx, &p, request, idx.vb_uint32) < 0) {
+ REDEBUG2("No previous numbered regex capture group");
+ return XLAT_ACTION_FAIL;
+ }
+
+ rad_assert(p);
MEM(vb = fr_value_box_alloc_null(ctx));
fr_value_box_bstrsteal(vb, vb, NULL, p, false);
return XLAT_ACTION_FAIL;
}
- if (regex_request_to_sub_named(request, &p, request, (*in)->vb_strvalue) < 0) return XLAT_ACTION_FAIL;
+ if (regex_request_to_sub_named(request, &p, request, (*in)->vb_strvalue) < 0) {
+ REDEBUG2("No previous named regex capture group");
+ return XLAT_ACTION_FAIL;
+ }
+
+ rad_assert(p);
MEM(vb = fr_value_box_alloc_null(ctx));
fr_value_box_bstrsteal(vb, vb, NULL, p, false);
if (('${feature.regex-pcre}' == 'yes') || ('${feature.regex-pcre2}' == 'yes')) {
update request {
&Tmp-Integer-0 := '123456789'
+ &Tmp-Integer-1 := 1
+}
+
+# Check failure when no previous capture - full capture
+if ("%{regex:}" != "") {
+ test_fail
+}
+
+if (&Module-Failure-Message[*] != "No previous regex capture") {
+ test_fail
+}
+
+update request {
+ &Module-Failure-Message !* ANY
+}
+
+# Check failure when no previous capture - named group
+if ("%{regex:foo}" != "") {
+ test_fail
+}
+
+if (&Module-Failure-Message[*] != "No previous named regex capture group") {
+ test_fail
+}
+
+update request {
+ &Module-Failure-Message !* ANY
+}
+
+# Check failure when no previous capture - numbered group
+if ("%{regex:%{Tmp-Integer-1}}" != "") {
+ test_fail
+}
+
+if (&Module-Failure-Message[*] != "No previous numbered regex capture group") {
+ test_fail
+}
+
+update request {
+ &Module-Failure-Message !* ANY
}
# uncompiled - ref - named capture groups