On Tue, Dec 03, 2013 at 12:12:19PM -0800, Steve Beattie wrote:
> This patch adds a warning when quote characters '\' are added
> unnecessarily, generates an error when a single quote is the last
> character in a pattern, and uncomments and corrects the relevant unit
> test cases.
> 
> Signed-off-by: Steve Beattie <st...@nxnw.org>

Acked-by: Seth Arnold <seth.arn...@canonical.com>

Thanks, these are real mind-benders of patches.

> ---
>  parser/parser_regex.c |   18 +++++++++++++++---
>  1 file changed, 15 insertions(+), 3 deletions(-)
> 
> Index: b/parser/parser_regex.c
> ===================================================================
> --- a/parser/parser_regex.c
> +++ b/parser/parser_regex.c
> @@ -329,6 +329,12 @@ static pattern_t convert_aaregex_to_pcre
>                       // fall through to default
>  
>               default:
> +                     if (bEscape) {
> +                             /* quoting mark used for something that
> +                              * does not need to be quoted; give a warning */
> +                             pwarn("Character %c was quoted unnecessarily, "
> +                                   "dropped preceding quote ('\\') 
> character\n", *sptr);
> +                     }
>                       STORE(sptr, dptr, 1);
>                       break;
>               }       /* switch (*sptr) */
> @@ -344,6 +350,12 @@ static pattern_t convert_aaregex_to_pcre
>                      progname);
>       }
>  
> +     if ((error == e_no_error) && bEscape) {
> +             /* trailing backslash quote */
> +             error = e_parse_error;
> +             PERROR(_("%s: Regex error: trailing '\\' escape character\n"),
> +                    progname);
> +     }
>       /* anchor end and terminate pattern string */
>       if ((error == e_no_error) && anchor) {
>               STORE("$" , dptr, 1);
> @@ -1304,11 +1316,11 @@ static int test_aaregex_to_pcre(void)
>  
>       MY_REGEX_TEST("/most/basic/test", "/most/basic/test", ePatternBasic);
>  
> -     //MY_REGEX_TEST("\\", "\\", ePatternBasic);
> +     MY_REGEX_FAIL_TEST("\\");
>       MY_REGEX_TEST("\\\\", "\\\\", ePatternBasic);
> -     //MY_REGEX_TEST("\\blort", "\\blort", ePatternBasic);
> +     MY_REGEX_TEST("\\blort", "blort", ePatternBasic);
>       MY_REGEX_TEST("\\\\blort", "\\\\blort", ePatternBasic);
> -     //MY_REGEX_TEST("blort\\", "blort\\", ePatternBasic);
> +     MY_REGEX_FAIL_TEST("blort\\");
>       MY_REGEX_TEST("blort\\\\", "blort\\\\", ePatternBasic);
>       MY_REGEX_TEST("*", "[^/\\x00]*", ePatternRegex);
>       MY_REGEX_TEST("blort*", "blort[^/\\x00]*", ePatternRegex);
> 
> 

Attachment: signature.asc
Description: Digital signature

-- 
AppArmor mailing list
AppArmor@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/apparmor

Reply via email to