24
1
mirror of https://github.com/processone/ejabberd.git synced 2024-06-18 22:15:20 +02:00

Malformed CAPTCHA response may crash a room. This is now fixed.

SVN Revision: 2148
This commit is contained in:
Evgeniy Khramtsov 2009-06-09 03:53:36 +00:00
parent 1266bf48e6
commit b7fd730409

View File

@ -153,8 +153,9 @@ process_reply({xmlelement, "captcha", _, _} = El) ->
{error, malformed}; {error, malformed};
Xdata -> Xdata ->
Fields = jlib:parse_xdata_submit(Xdata), Fields = jlib:parse_xdata_submit(Xdata),
[Id | _] = proplists:get_value("challenge", Fields, [none]), case {proplists:get_value("challenge", Fields),
[OCR | _] = proplists:get_value("ocr", Fields, [none]), proplists:get_value("ocr", Fields)} of
{[Id|_], [OCR|_]} ->
?T(case mnesia:read(captcha, Id, write) of ?T(case mnesia:read(captcha, Id, write) of
[#captcha{pid=Pid, args=Args, key=Key, tref=Tref}] -> [#captcha{pid=Pid, args=Args, key=Key, tref=Tref}] ->
mnesia:delete({captcha, Id}), mnesia:delete({captcha, Id}),
@ -168,7 +169,10 @@ process_reply({xmlelement, "captcha", _, _} = El) ->
end; end;
_ -> _ ->
{error, not_found} {error, not_found}
end) end);
_ ->
{error, malformed}
end
end; end;
process_reply(_) -> process_reply(_) ->
{error, malformed}. {error, malformed}.