From 9d977e484a4c9609e19b08bc1235deb88b9a725c Mon Sep 17 00:00:00 2001 From: Evgeniy Khramtsov Date: Sat, 22 Oct 2016 13:09:11 +0300 Subject: [PATCH] Use base64:mime_decode/1 for SASL packets It will be now possible to accept SASL packets with only single '=' character set as required by RFC6120 --- specs/xmpp_codec.spec | 9 +++++---- src/xmpp_codec.erl | 8 ++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/specs/xmpp_codec.spec b/specs/xmpp_codec.spec index 81f674bf3..608e1fe2d 100644 --- a/specs/xmpp_codec.spec +++ b/specs/xmpp_codec.spec @@ -659,7 +659,7 @@ #elem{name = <<"auth">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, cdata = #cdata{label = '$text', - dec = {base64, decode, []}, + dec = {base64, mime_decode, []}, enc = {base64, encode, []}}, result = {sasl_auth, '$mechanism', '$text'}, attrs = [#attr{name = <<"mechanism">>, @@ -674,7 +674,7 @@ #elem{name = <<"challenge">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, cdata = #cdata{label = '$text', - dec = {base64, decode, []}, + dec = {base64, mime_decode, []}, enc = {base64, encode, []}}, result = {sasl_challenge, '$text'}}). @@ -682,7 +682,7 @@ #elem{name = <<"response">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, cdata = #cdata{label = '$text', - dec = {base64, decode, []}, + dec = {base64, mime_decode, []}, enc = {base64, encode, []}}, result = {sasl_response, '$text'}}). @@ -690,7 +690,7 @@ #elem{name = <<"success">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, cdata = #cdata{label = '$text', - dec = {base64, decode, []}, + dec = {base64, mime_decode, []}, enc = {base64, encode, []}}, result = {sasl_success, '$text'}}). @@ -3467,6 +3467,7 @@ enc_ip(Addr) -> -spec re:split(_, _) -> [binary()]. -spec base64:decode(_) -> binary(). +-spec base64:mime_decode(_) -> binary(). -spec dec_host_port(_) -> binary() | inet:ip_address() | {binary() | inet:ip_address(), non_neg_integer()}. diff --git a/src/xmpp_codec.erl b/src/xmpp_codec.erl index f230dc489..345de7031 100644 --- a/src/xmpp_codec.erl +++ b/src/xmpp_codec.erl @@ -29298,7 +29298,7 @@ encode_sasl_success({sasl_success, Text}, __TopXMLNS) -> decode_sasl_success_cdata(__TopXMLNS, <<>>) -> <<>>; decode_sasl_success_cdata(__TopXMLNS, _val) -> - case catch base64:decode(_val) of + case catch base64:mime_decode(_val) of {'EXIT', _} -> erlang:error({xmpp_codec, {bad_cdata_value, <<>>, <<"success">>, __TopXMLNS}}); @@ -29338,7 +29338,7 @@ encode_sasl_response({sasl_response, Text}, decode_sasl_response_cdata(__TopXMLNS, <<>>) -> <<>>; decode_sasl_response_cdata(__TopXMLNS, _val) -> - case catch base64:decode(_val) of + case catch base64:mime_decode(_val) of {'EXIT', _} -> erlang:error({xmpp_codec, {bad_cdata_value, <<>>, <<"response">>, __TopXMLNS}}); @@ -29378,7 +29378,7 @@ encode_sasl_challenge({sasl_challenge, Text}, decode_sasl_challenge_cdata(__TopXMLNS, <<>>) -> <<>>; decode_sasl_challenge_cdata(__TopXMLNS, _val) -> - case catch base64:decode(_val) of + case catch base64:mime_decode(_val) of {'EXIT', _} -> erlang:error({xmpp_codec, {bad_cdata_value, <<>>, <<"challenge">>, __TopXMLNS}}); @@ -29454,7 +29454,7 @@ encode_sasl_auth_attr_mechanism(_val, _acc) -> decode_sasl_auth_cdata(__TopXMLNS, <<>>) -> <<>>; decode_sasl_auth_cdata(__TopXMLNS, _val) -> - case catch base64:decode(_val) of + case catch base64:mime_decode(_val) of {'EXIT', _} -> erlang:error({xmpp_codec, {bad_cdata_value, <<>>, <<"auth">>, __TopXMLNS}});