[apparmor] [patch 04/12] parser: add more convert_aaregex_to_pcre() unit tests

Seth Arnold seth.arnold at canonical.com
Fri Dec 6 03:33:38 UTC 2013


On Tue, Dec 03, 2013 at 12:12:20PM -0800, Steve Beattie wrote:
> Signed-off-by: Steve Beattie <steve at nxnw.org>

Acked-by: Seth Arnold <seth.arnold at canonical.com>

I think one more case would be useful, to check that /**/ works as
expected:

	MY_REGEX_TEST("/**/", "/[^/\\x00][^\\x00]*/", ePatternTailGlob);

Does that look right?

Thanks

> ---
>  parser/parser_regex.c |   31 +++++++++++++++++++++++++++++++
>  1 file changed, 31 insertions(+)
> 
> Index: b/parser/parser_regex.c
> ===================================================================
> --- a/parser/parser_regex.c
> +++ b/parser/parser_regex.c
> @@ -1359,6 +1359,7 @@ static int test_aaregex_to_pcre(void)
>  	MY_REGEX_FAIL_TEST("blort]");
>  	MY_REGEX_FAIL_TEST("blo]rt");
>  	MY_REGEX_FAIL_TEST("]blort");
> +	MY_REGEX_TEST("b[lor]t", "b[lor]t", ePatternRegex);
>  
>  	/* simple alternation tests */
>  	MY_REGEX_TEST("{alpha,beta}", "(alpha|beta)", ePatternRegex);
> @@ -1377,6 +1378,36 @@ static int test_aaregex_to_pcre(void)
>  	MY_REGEX_TEST("{{alpha,alpha{blort,nested}}beta,beta}", "((alpha|alpha(blort|nested))beta|beta)", ePatternRegex);
>  	MY_REGEX_TEST("{{alpha,alpha{blort,nested}}beta,beta}", "((alpha|alpha(blort|nested))beta|beta)", ePatternRegex);
>  	MY_REGEX_TEST("{{a,b{c,d}}e,{f,{g,{h{i,j,k},l}m},n}o}", "((a|b(c|d))e|(f|(g|(h(i|j|k)|l)m)|n)o)", ePatternRegex);
> +	/* max nesting depth = 50 */
> +	MY_REGEX_TEST("{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a,b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b}b,blort}",
> +			"(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a(a|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)|b)b|blort)", ePatternRegex);
> +	MY_REGEX_FAIL_TEST("{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a,b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b},b}b,blort}");
> +
> +	/* simple single char */
> +	MY_REGEX_TEST("blor?t", "blor[^/\\x00]t", ePatternRegex);
> +
> +	/* simple globbing */
> +	MY_REGEX_TEST("/*", "/[^/\\x00][^/\\x00]*", ePatternRegex);
> +	MY_REGEX_TEST("/blort/*", "/blort/[^/\\x00][^/\\x00]*", ePatternRegex);
> +	MY_REGEX_TEST("/*/blort", "/[^/\\x00][^/\\x00]*/blort", ePatternRegex);
> +	MY_REGEX_TEST("/**", "/[^/\\x00][^\\x00]*", ePatternTailGlob);
> +	MY_REGEX_TEST("/blort/**", "/blort/[^/\\x00][^\\x00]*", ePatternTailGlob);
> +	MY_REGEX_TEST("/**/blort", "/[^/\\x00][^\\x00]*/blort", ePatternRegex);
> +
> +	/* more complicated quoting */
> +	MY_REGEX_FAIL_TEST("\\\\[");
> +	MY_REGEX_FAIL_TEST("\\\\]");
> +	MY_REGEX_TEST("\\\\?", "\\\\[^/\\x00]", ePatternRegex);
> +	MY_REGEX_FAIL_TEST("\\\\{");
> +	MY_REGEX_FAIL_TEST("\\\\}");
> +	MY_REGEX_TEST("\\\\,", "\\\\,", ePatternBasic);
> +	MY_REGEX_TEST("\\\\^", "\\\\\\^", ePatternBasic);
> +	MY_REGEX_TEST("\\\\$", "\\\\\\$", ePatternBasic);
> +	MY_REGEX_TEST("\\\\.", "\\\\\\.", ePatternBasic);
> +	MY_REGEX_TEST("\\\\+", "\\\\\\+", ePatternBasic);
> +	MY_REGEX_TEST("\\\\|", "\\\\\\|", ePatternBasic);
> +	MY_REGEX_TEST("\\\\(", "\\\\\\(", ePatternBasic);
> +	MY_REGEX_TEST("\\\\)", "\\\\\\)", ePatternBasic);
>  
>  	return rc;
>  }
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 490 bytes
Desc: Digital signature
URL: <https://lists.ubuntu.com/archives/apparmor/attachments/20131205/9d031669/attachment.pgp>


More information about the AppArmor mailing list