25
1
mirror of https://github.com/processone/ejabberd.git synced 2024-12-22 17:28:25 +01:00

Don't allow room config to enable password protection with empty password (EJAB-1011)

SVN Revision: 2485
This commit is contained in:
Badlop 2009-08-15 20:09:05 +00:00
parent 5ddfccd45e
commit 3e45bdcc2d

View File

@ -2640,7 +2640,9 @@ process_iq_owner(From, set, Lang, SubEl, StateData) ->
From)
andalso
is_allowed_room_name_desc_limits(XEl,
StateData) of
StateData)
andalso
is_password_settings_correct(XEl, StateData) of
true -> set_config(XEl, StateData);
false -> {error, ?ERR_NOT_ACCEPTABLE}
end;
@ -2740,6 +2742,44 @@ is_allowed_room_name_desc_limits(XEl, StateData) ->
end,
IsNameAccepted and IsDescAccepted.
%% Return false if:
%% "the password for a password-protected room is blank"
is_password_settings_correct(XEl, StateData) ->
Config = StateData#state.config,
OldProtected = Config#config.password_protected,
OldPassword = Config#config.password,
NewProtected =
case lists:keysearch("muc#roomconfig_passwordprotectedroom", 1,
jlib:parse_xdata_submit(XEl)) of
{value, {_, ["1"]}} ->
true;
{value, {_, ["0"]}} ->
false;
_ ->
undefined
end,
NewPassword =
case lists:keysearch("muc#roomconfig_roomsecret", 1,
jlib:parse_xdata_submit(XEl)) of
{value, {_, [P]}} ->
P;
_ ->
undefined
end,
case {OldProtected, NewProtected, OldPassword, NewPassword} of
{true, undefined, "", undefined} ->
false;
{true, undefined, _, ""} ->
false;
{_, true , "", undefined} ->
false;
{_, true, _, ""} ->
false;
_ ->
true
end.
-define(XFIELD(Type, Label, Var, Val),
{xmlelement, "field", [{"type", Type},
{"label", translate:translate(Lang, Label)},