1
0
Fork 0
mirror of https://github.com/vanitasvitae/Smack.git synced 2024-11-16 09:12:06 +01:00

Handle empty array in SASLMechanism.authenticate()

like null array.

Thanks to Anthony Sorvari for reporting.

Fixes SMACK-670.
This commit is contained in:
Florian Schmaus 2015-05-21 22:20:30 +02:00
parent 576980097e
commit c120bc1cbc

View file

@ -195,7 +195,10 @@ public abstract class SASLMechanism implements Comparable<SASLMechanism> {
private final void authenticate() throws SmackException, NotConnectedException { private final void authenticate() throws SmackException, NotConnectedException {
byte[] authenticationBytes = getAuthenticationText(); byte[] authenticationBytes = getAuthenticationText();
String authenticationText; String authenticationText;
if (authenticationBytes != null) { // Some SASL mechanisms do return an empty array (e.g. EXTERNAL from javax), so check that
// the array is not-empty. Mechanisms are allowed to return either 'null' or an empty array
// if there is no authentication text.
if (authenticationBytes != null && authenticationBytes.length > 0) {
authenticationText = Base64.encodeToString(authenticationBytes); authenticationText = Base64.encodeToString(authenticationBytes);
} else { } else {
// RFC6120 6.4.2 "If the initiating entity needs to send a zero-length initial response, // RFC6120 6.4.2 "If the initiating entity needs to send a zero-length initial response,
@ -209,7 +212,8 @@ public abstract class SASLMechanism implements Comparable<SASLMechanism> {
/** /**
* Should return the initial response of the SASL mechanism. The returned byte array will be * Should return the initial response of the SASL mechanism. The returned byte array will be
* send base64 encoded to the server. SASL mechanism are free to return <code>null</code> here. * send base64 encoded to the server. SASL mechanism are free to return <code>null</code> or an
* empty array here.
* *
* @return the initial response or null * @return the initial response or null
* @throws SmackException * @throws SmackException