aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--src/acl.erl17
2 files changed, 19 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index cb88f36f5..12e21ecbe 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-02-12 Badlop <badlop@process-one.net>
+
+ * src/acl.erl: Normalize ACL before adding to the configuration
+ tables (EJAB-521)
+
2008-02-11 Christophe Romain <christophe.romain@process-one.net>
* src/mod_pubsub/mod_pubsub.erl: Bugfix: event used in place of x when
diff --git a/src/acl.erl b/src/acl.erl
index ee26a5e42..c3fcebba4 100644
--- a/src/acl.erl
+++ b/src/acl.erl
@@ -48,12 +48,12 @@ start() ->
ok.
to_record(Host, ACLName, ACLSpec) ->
- #acl{aclname = {ACLName, Host}, aclspec = ACLSpec}.
+ #acl{aclname = {ACLName, Host}, aclspec = normalize_spec(ACLSpec)}.
add(Host, ACLName, ACLSpec) ->
F = fun() ->
mnesia:write(#acl{aclname = {ACLName, Host},
- aclspec = ACLSpec})
+ aclspec = normalize_spec(ACLSpec)})
end,
mnesia:transaction(F).
@@ -75,7 +75,7 @@ add_list(Host, ACLs, Clear) ->
aclspec = ACLSpec} ->
mnesia:write(
#acl{aclname = {ACLName, Host},
- aclspec = ACLSpec})
+ aclspec = normalize_spec(ACLSpec)})
end
end, ACLs)
end,
@@ -86,6 +86,17 @@ add_list(Host, ACLs, Clear) ->
false
end.
+normalize(A) ->
+ jlib:nodeprep(A).
+normalize_spec({A, B}) ->
+ {A, normalize(B)};
+normalize_spec({A, B, C}) ->
+ {A, normalize(B), normalize(C)};
+normalize_spec(all) ->
+ all;
+normalize_spec(none) ->
+ none.
+
match_rule(global, Rule, JID) ->