2a0b7cf5d2476e19c9eeb0ce6f7b46742f2e647e
[librecmc/librecmc-fossil.git] /
1 From 623401b983185c1e0f6507e96557de3bc46fd41b Mon Sep 17 00:00:00 2001
2 From: Thierry FOURNIER <tfournier@exceliance.fr>
3 Date: Fri, 6 Feb 2015 17:53:54 +0100
4 Subject: [PATCH 2/2] BUG/MEDIUM: pattern: some entries are not deleted with
5  case insensitive match
6
7 ACL or map entries are not deleted with the command "del acl" or "del map"
8 if the case insentive flag is set.
9
10 This is because the the case insensitive string are stored in a list and the
11 default delete function associated with string looks in a tree. I add a check
12 of the case insensitive flag and execute the delete function for lists if it
13 is set.
14
15 This patch must be backported in 1.5 version.
16 (cherry picked from commit 73bc285be194f443dc7eab9c949e87e1dbe8f70c)
17 ---
18  src/pattern.c | 4 ++++
19  1 file changed, 4 insertions(+)
20
21 diff --git a/src/pattern.c b/src/pattern.c
22 index a6fc52d..b19ffe2 100644
23 --- a/src/pattern.c
24 +++ b/src/pattern.c
25 @@ -1308,6 +1308,10 @@ void pat_del_tree_str(struct pattern_expr *expr, struct pat_ref_elt *ref)
26         struct ebmb_node *node, *next_node;
27         struct pattern_tree *elt;
28  
29 +       /* If the flag PAT_F_IGNORE_CASE is set, we cannot use trees */
30 +       if (expr->mflags & PAT_MF_IGNORE_CASE)
31 +               return pat_del_list_ptr(expr, ref);
32 +
33         /* browse each node of the tree. */
34         for (node = ebmb_first(&expr->pattern_tree), next_node = node ? ebmb_next(node) : NULL;
35              node;
36 -- 
37 2.0.4
38