[jira] [Commented] (QPIDJMS-65) CRAM-MD5 SASL mechanism throws NullPointerException when no username or password is specified

2015-06-02 Thread Jakub Scholz (JIRA)

[ 
https://issues.apache.org/jira/browse/QPIDJMS-65?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14568960#comment-14568960
 ] 

Jakub Scholz commented on QPIDJMS-65:
-

Yeah, in my opinion, unless there is someone with a scenario where username  
password based authentication doesn't require password or username, it would be 
best if the PLAIN and CRAM-MD5 are disabled in these cases. 

I think it would even slightly enhance the clients usability, because today, 
you cannot choose ANONYMOUS mechanism when PLAIN or CRAM-MD5 is available on 
the broker. With this implemented as you suggest, the client would simply 
ignore the PLAIN and CRAM-MD5 mechanisms in case username/password were not 
specified and default to ANONYMOUS.

 CRAM-MD5 SASL mechanism throws NullPointerException when no username or 
 password is specified
 -

 Key: QPIDJMS-65
 URL: https://issues.apache.org/jira/browse/QPIDJMS-65
 Project: Qpid JMS
  Issue Type: Bug
Affects Versions: 0.2.0
Reporter: Jakub Scholz
Priority: Minor
 Attachments: QPIDJMS-65.patch


 When the CRAM-MD5 SASL mechanism is used and no jms.username or jms.password 
 parameter was specified in connection URI, a NullPointerExpception will be 
 thrown, for example:
 {code}TRACE org.apache.qpid.jms.transports.netty.NettyTcpTransport - 
 Attempted write of: 8 bytes
 TRACE org.apache.qpid.jms.transports.netty.NettyTcpTransport - New data read: 
 68 bytes incoming: UnpooledHeapByteBuf(ridx: 0, widx: 68, cap: 65536)
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - Received from Broker 
 68 bytes: UnpooledHeapByteBuf(ridx: 0, widx: 68, cap: 65536)
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - New Proton Event: 
 CONNECTION_INIT
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - New Proton Event: 
 SESSION_INIT
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - New Proton Event: 
 CONNECTION_LOCAL_OPEN
 DEBUG org.apache.qpid.jms.sasl.SaslMechanismFinder - Unknown SASL mechanism: 
 [DIGEST-MD5]
 INFO org.apache.qpid.jms.sasl.SaslMechanismFinder - Best match for SASL auth 
 was: SASL-CRAM-MD5
 TRACE org.apache.qpid.jms.transports.netty.NettyTcpTransport - Attempted 
 write of: 24 bytes
 TRACE org.apache.qpid.jms.transports.netty.NettyTcpTransport - New data read: 
 55 bytes incoming: UnpooledHeapByteBuf(ridx: 0, widx: 55, cap: 65536)
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - Received from Broker 
 55 bytes: UnpooledHeapByteBuf(ridx: 0, widx: 55, cap: 65536)
 WARN org.apache.qpid.jms.provider.amqp.AmqpProvider - Caught Exception during 
 update processing: null
 java.lang.NullPointerException
   at 
 org.apache.qpid.jms.sasl.CramMD5Mechanism.getChallengeResponse(CramMD5Mechanism.java:57)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpSaslAuthenticator.handleSaslStep(AmqpSaslAuthenticator.java:111)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpSaslAuthenticator.authenticate(AmqpSaslAuthenticator.java:63)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpConnection.processSaslAuthentication(AmqpConnection.java:155)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.processUpdates(AmqpProvider.java:777)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.access$1500(AmqpProvider.java:87)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider$16.run(AmqpProvider.java:667)
   at 
 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
   at java.util.concurrent.FutureTask.run(FutureTask.java:262)
   at 
 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
   at 
 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
   at 
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
   at 
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
   at java.lang.Thread.run(Thread.java:745)
 javax.jms.JMSException: java.lang.NullPointerException
 Exception occurred and was caught by onException
   at 
 org.apache.qpid.jms.exceptions.JmsExceptionSupport.create(JmsExceptionSupport.java:60)
   at 
 org.apache.qpid.jms.JmsConnection.onAsyncException(JmsConnection.java:1169)
   at 
 org.apache.qpid.jms.JmsConnection.onConnectionFailure(JmsConnection.java:1085)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.fireProviderException(AmqpProvider.java:832)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.processUpdates(AmqpProvider.java:781)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.access$1500(AmqpProvider.java:87)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider$16.run(AmqpProvider.java:667)
   at 

[jira] [Commented] (QPIDJMS-65) CRAM-MD5 SASL mechanism throws NullPointerException when no username or password is specified

2015-06-02 Thread Robbie Gemmell (JIRA)

[ 
https://issues.apache.org/jira/browse/QPIDJMS-65?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14568882#comment-14568882
 ] 

Robbie Gemmell commented on QPIDJMS-65:
---

As you note, its not clear that it makes any sense for the username or password 
to be missing (same goes for PLAIN), so arguably the issue is that it elects to 
use the mechanism in the first place rather than what happens once it does. If 
a mechanism requires user info that isn't available then we should probably 
skip the mechanism, likely ending up with only ANONYMOUS and EXTERNAL being 
available for selection.

 CRAM-MD5 SASL mechanism throws NullPointerException when no username or 
 password is specified
 -

 Key: QPIDJMS-65
 URL: https://issues.apache.org/jira/browse/QPIDJMS-65
 Project: Qpid JMS
  Issue Type: Bug
Affects Versions: 0.2.0
Reporter: Jakub Scholz
Priority: Minor
 Attachments: QPIDJMS-65.patch


 When the CRAM-MD5 SASL mechanism is used and no jms.username or jms.password 
 parameter was specified in connection URI, a NullPointerExpception will be 
 thrown, for example:
 {code}TRACE org.apache.qpid.jms.transports.netty.NettyTcpTransport - 
 Attempted write of: 8 bytes
 TRACE org.apache.qpid.jms.transports.netty.NettyTcpTransport - New data read: 
 68 bytes incoming: UnpooledHeapByteBuf(ridx: 0, widx: 68, cap: 65536)
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - Received from Broker 
 68 bytes: UnpooledHeapByteBuf(ridx: 0, widx: 68, cap: 65536)
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - New Proton Event: 
 CONNECTION_INIT
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - New Proton Event: 
 SESSION_INIT
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - New Proton Event: 
 CONNECTION_LOCAL_OPEN
 DEBUG org.apache.qpid.jms.sasl.SaslMechanismFinder - Unknown SASL mechanism: 
 [DIGEST-MD5]
 INFO org.apache.qpid.jms.sasl.SaslMechanismFinder - Best match for SASL auth 
 was: SASL-CRAM-MD5
 TRACE org.apache.qpid.jms.transports.netty.NettyTcpTransport - Attempted 
 write of: 24 bytes
 TRACE org.apache.qpid.jms.transports.netty.NettyTcpTransport - New data read: 
 55 bytes incoming: UnpooledHeapByteBuf(ridx: 0, widx: 55, cap: 65536)
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - Received from Broker 
 55 bytes: UnpooledHeapByteBuf(ridx: 0, widx: 55, cap: 65536)
 WARN org.apache.qpid.jms.provider.amqp.AmqpProvider - Caught Exception during 
 update processing: null
 java.lang.NullPointerException
   at 
 org.apache.qpid.jms.sasl.CramMD5Mechanism.getChallengeResponse(CramMD5Mechanism.java:57)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpSaslAuthenticator.handleSaslStep(AmqpSaslAuthenticator.java:111)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpSaslAuthenticator.authenticate(AmqpSaslAuthenticator.java:63)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpConnection.processSaslAuthentication(AmqpConnection.java:155)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.processUpdates(AmqpProvider.java:777)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.access$1500(AmqpProvider.java:87)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider$16.run(AmqpProvider.java:667)
   at 
 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
   at java.util.concurrent.FutureTask.run(FutureTask.java:262)
   at 
 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
   at 
 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
   at 
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
   at 
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
   at java.lang.Thread.run(Thread.java:745)
 javax.jms.JMSException: java.lang.NullPointerException
 Exception occurred and was caught by onException
   at 
 org.apache.qpid.jms.exceptions.JmsExceptionSupport.create(JmsExceptionSupport.java:60)
   at 
 org.apache.qpid.jms.JmsConnection.onAsyncException(JmsConnection.java:1169)
   at 
 org.apache.qpid.jms.JmsConnection.onConnectionFailure(JmsConnection.java:1085)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.fireProviderException(AmqpProvider.java:832)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.processUpdates(AmqpProvider.java:781)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.access$1500(AmqpProvider.java:87)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider$16.run(AmqpProvider.java:667)
   at 
 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
   at java.util.concurrent.FutureTask.run(FutureTask.java:262)

[jira] [Commented] (QPIDJMS-65) CRAM-MD5 SASL mechanism throws NullPointerException when no username or password is specified

2015-06-02 Thread Robbie Gemmell (JIRA)

[ 
https://issues.apache.org/jira/browse/QPIDJMS-65?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14568969#comment-14568969
 ] 

Robbie Gemmell commented on QPIDJMS-65:
---

Agreed. Being able to configure which mechanism(s) the client should elect to 
utilise is also something else that has been in mind (e.g it is mentioned on 
QPIDJMS-61, though needs its own JIRA really)

 CRAM-MD5 SASL mechanism throws NullPointerException when no username or 
 password is specified
 -

 Key: QPIDJMS-65
 URL: https://issues.apache.org/jira/browse/QPIDJMS-65
 Project: Qpid JMS
  Issue Type: Bug
Affects Versions: 0.2.0
Reporter: Jakub Scholz
Priority: Minor
 Attachments: QPIDJMS-65.patch


 When the CRAM-MD5 SASL mechanism is used and no jms.username or jms.password 
 parameter was specified in connection URI, a NullPointerExpception will be 
 thrown, for example:
 {code}TRACE org.apache.qpid.jms.transports.netty.NettyTcpTransport - 
 Attempted write of: 8 bytes
 TRACE org.apache.qpid.jms.transports.netty.NettyTcpTransport - New data read: 
 68 bytes incoming: UnpooledHeapByteBuf(ridx: 0, widx: 68, cap: 65536)
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - Received from Broker 
 68 bytes: UnpooledHeapByteBuf(ridx: 0, widx: 68, cap: 65536)
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - New Proton Event: 
 CONNECTION_INIT
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - New Proton Event: 
 SESSION_INIT
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - New Proton Event: 
 CONNECTION_LOCAL_OPEN
 DEBUG org.apache.qpid.jms.sasl.SaslMechanismFinder - Unknown SASL mechanism: 
 [DIGEST-MD5]
 INFO org.apache.qpid.jms.sasl.SaslMechanismFinder - Best match for SASL auth 
 was: SASL-CRAM-MD5
 TRACE org.apache.qpid.jms.transports.netty.NettyTcpTransport - Attempted 
 write of: 24 bytes
 TRACE org.apache.qpid.jms.transports.netty.NettyTcpTransport - New data read: 
 55 bytes incoming: UnpooledHeapByteBuf(ridx: 0, widx: 55, cap: 65536)
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - Received from Broker 
 55 bytes: UnpooledHeapByteBuf(ridx: 0, widx: 55, cap: 65536)
 WARN org.apache.qpid.jms.provider.amqp.AmqpProvider - Caught Exception during 
 update processing: null
 java.lang.NullPointerException
   at 
 org.apache.qpid.jms.sasl.CramMD5Mechanism.getChallengeResponse(CramMD5Mechanism.java:57)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpSaslAuthenticator.handleSaslStep(AmqpSaslAuthenticator.java:111)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpSaslAuthenticator.authenticate(AmqpSaslAuthenticator.java:63)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpConnection.processSaslAuthentication(AmqpConnection.java:155)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.processUpdates(AmqpProvider.java:777)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.access$1500(AmqpProvider.java:87)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider$16.run(AmqpProvider.java:667)
   at 
 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
   at java.util.concurrent.FutureTask.run(FutureTask.java:262)
   at 
 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
   at 
 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
   at 
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
   at 
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
   at java.lang.Thread.run(Thread.java:745)
 javax.jms.JMSException: java.lang.NullPointerException
 Exception occurred and was caught by onException
   at 
 org.apache.qpid.jms.exceptions.JmsExceptionSupport.create(JmsExceptionSupport.java:60)
   at 
 org.apache.qpid.jms.JmsConnection.onAsyncException(JmsConnection.java:1169)
   at 
 org.apache.qpid.jms.JmsConnection.onConnectionFailure(JmsConnection.java:1085)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.fireProviderException(AmqpProvider.java:832)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.processUpdates(AmqpProvider.java:781)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.access$1500(AmqpProvider.java:87)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider$16.run(AmqpProvider.java:667)
   at 
 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
   at java.util.concurrent.FutureTask.run(FutureTask.java:262)
   at 
 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
   at 
 

[jira] [Commented] (QPIDJMS-65) CRAM-MD5 SASL mechanism throws NullPointerException when no username or password is specified

2015-06-02 Thread Robbie Gemmell (JIRA)

[ 
https://issues.apache.org/jira/browse/QPIDJMS-65?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14568968#comment-14568968
 ] 

Robbie Gemmell commented on QPIDJMS-65:
---

Agreed. Being able to configure which mechanism(s) the client should elect to 
utilise is also something else that has been in mind (e.g it is mentioned on 
QPIDJMS-61, though needs its own JIRA really)

 CRAM-MD5 SASL mechanism throws NullPointerException when no username or 
 password is specified
 -

 Key: QPIDJMS-65
 URL: https://issues.apache.org/jira/browse/QPIDJMS-65
 Project: Qpid JMS
  Issue Type: Bug
Affects Versions: 0.2.0
Reporter: Jakub Scholz
Priority: Minor
 Attachments: QPIDJMS-65.patch


 When the CRAM-MD5 SASL mechanism is used and no jms.username or jms.password 
 parameter was specified in connection URI, a NullPointerExpception will be 
 thrown, for example:
 {code}TRACE org.apache.qpid.jms.transports.netty.NettyTcpTransport - 
 Attempted write of: 8 bytes
 TRACE org.apache.qpid.jms.transports.netty.NettyTcpTransport - New data read: 
 68 bytes incoming: UnpooledHeapByteBuf(ridx: 0, widx: 68, cap: 65536)
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - Received from Broker 
 68 bytes: UnpooledHeapByteBuf(ridx: 0, widx: 68, cap: 65536)
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - New Proton Event: 
 CONNECTION_INIT
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - New Proton Event: 
 SESSION_INIT
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - New Proton Event: 
 CONNECTION_LOCAL_OPEN
 DEBUG org.apache.qpid.jms.sasl.SaslMechanismFinder - Unknown SASL mechanism: 
 [DIGEST-MD5]
 INFO org.apache.qpid.jms.sasl.SaslMechanismFinder - Best match for SASL auth 
 was: SASL-CRAM-MD5
 TRACE org.apache.qpid.jms.transports.netty.NettyTcpTransport - Attempted 
 write of: 24 bytes
 TRACE org.apache.qpid.jms.transports.netty.NettyTcpTransport - New data read: 
 55 bytes incoming: UnpooledHeapByteBuf(ridx: 0, widx: 55, cap: 65536)
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - Received from Broker 
 55 bytes: UnpooledHeapByteBuf(ridx: 0, widx: 55, cap: 65536)
 WARN org.apache.qpid.jms.provider.amqp.AmqpProvider - Caught Exception during 
 update processing: null
 java.lang.NullPointerException
   at 
 org.apache.qpid.jms.sasl.CramMD5Mechanism.getChallengeResponse(CramMD5Mechanism.java:57)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpSaslAuthenticator.handleSaslStep(AmqpSaslAuthenticator.java:111)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpSaslAuthenticator.authenticate(AmqpSaslAuthenticator.java:63)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpConnection.processSaslAuthentication(AmqpConnection.java:155)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.processUpdates(AmqpProvider.java:777)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.access$1500(AmqpProvider.java:87)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider$16.run(AmqpProvider.java:667)
   at 
 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
   at java.util.concurrent.FutureTask.run(FutureTask.java:262)
   at 
 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
   at 
 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
   at 
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
   at 
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
   at java.lang.Thread.run(Thread.java:745)
 javax.jms.JMSException: java.lang.NullPointerException
 Exception occurred and was caught by onException
   at 
 org.apache.qpid.jms.exceptions.JmsExceptionSupport.create(JmsExceptionSupport.java:60)
   at 
 org.apache.qpid.jms.JmsConnection.onAsyncException(JmsConnection.java:1169)
   at 
 org.apache.qpid.jms.JmsConnection.onConnectionFailure(JmsConnection.java:1085)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.fireProviderException(AmqpProvider.java:832)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.processUpdates(AmqpProvider.java:781)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.access$1500(AmqpProvider.java:87)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider$16.run(AmqpProvider.java:667)
   at 
 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
   at java.util.concurrent.FutureTask.run(FutureTask.java:262)
   at 
 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
   at 
 

[jira] [Commented] (QPIDJMS-65) CRAM-MD5 SASL mechanism throws NullPointerException when no username or password is specified

2015-06-02 Thread ASF subversion and git services (JIRA)

[ 
https://issues.apache.org/jira/browse/QPIDJMS-65?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14569206#comment-14569206
 ] 

ASF subversion and git services commented on QPIDJMS-65:


Commit 7e831696cd9be6758642eb0d366dc59073e4b158 in qpid-jms's branch 
refs/heads/master from Robert Gemmell
[ https://git-wip-us.apache.org/repos/asf?p=qpid-jms.git;h=7e83169 ]

QPIDJMS-65: dont use CRAM-MD5 or PLAIN if either a username and password have 
not actually been supplied


 CRAM-MD5 SASL mechanism throws NullPointerException when no username or 
 password is specified
 -

 Key: QPIDJMS-65
 URL: https://issues.apache.org/jira/browse/QPIDJMS-65
 Project: Qpid JMS
  Issue Type: Bug
Affects Versions: 0.2.0
Reporter: Jakub Scholz
Assignee: Robbie Gemmell
Priority: Minor
 Attachments: QPIDJMS-65.patch


 When the CRAM-MD5 SASL mechanism is used and no jms.username or jms.password 
 parameter was specified in connection URI, a NullPointerExpception will be 
 thrown, for example:
 {code}TRACE org.apache.qpid.jms.transports.netty.NettyTcpTransport - 
 Attempted write of: 8 bytes
 TRACE org.apache.qpid.jms.transports.netty.NettyTcpTransport - New data read: 
 68 bytes incoming: UnpooledHeapByteBuf(ridx: 0, widx: 68, cap: 65536)
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - Received from Broker 
 68 bytes: UnpooledHeapByteBuf(ridx: 0, widx: 68, cap: 65536)
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - New Proton Event: 
 CONNECTION_INIT
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - New Proton Event: 
 SESSION_INIT
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - New Proton Event: 
 CONNECTION_LOCAL_OPEN
 DEBUG org.apache.qpid.jms.sasl.SaslMechanismFinder - Unknown SASL mechanism: 
 [DIGEST-MD5]
 INFO org.apache.qpid.jms.sasl.SaslMechanismFinder - Best match for SASL auth 
 was: SASL-CRAM-MD5
 TRACE org.apache.qpid.jms.transports.netty.NettyTcpTransport - Attempted 
 write of: 24 bytes
 TRACE org.apache.qpid.jms.transports.netty.NettyTcpTransport - New data read: 
 55 bytes incoming: UnpooledHeapByteBuf(ridx: 0, widx: 55, cap: 65536)
 TRACE org.apache.qpid.jms.provider.amqp.AmqpProvider - Received from Broker 
 55 bytes: UnpooledHeapByteBuf(ridx: 0, widx: 55, cap: 65536)
 WARN org.apache.qpid.jms.provider.amqp.AmqpProvider - Caught Exception during 
 update processing: null
 java.lang.NullPointerException
   at 
 org.apache.qpid.jms.sasl.CramMD5Mechanism.getChallengeResponse(CramMD5Mechanism.java:57)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpSaslAuthenticator.handleSaslStep(AmqpSaslAuthenticator.java:111)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpSaslAuthenticator.authenticate(AmqpSaslAuthenticator.java:63)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpConnection.processSaslAuthentication(AmqpConnection.java:155)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.processUpdates(AmqpProvider.java:777)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.access$1500(AmqpProvider.java:87)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider$16.run(AmqpProvider.java:667)
   at 
 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
   at java.util.concurrent.FutureTask.run(FutureTask.java:262)
   at 
 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
   at 
 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
   at 
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
   at 
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
   at java.lang.Thread.run(Thread.java:745)
 javax.jms.JMSException: java.lang.NullPointerException
 Exception occurred and was caught by onException
   at 
 org.apache.qpid.jms.exceptions.JmsExceptionSupport.create(JmsExceptionSupport.java:60)
   at 
 org.apache.qpid.jms.JmsConnection.onAsyncException(JmsConnection.java:1169)
   at 
 org.apache.qpid.jms.JmsConnection.onConnectionFailure(JmsConnection.java:1085)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.fireProviderException(AmqpProvider.java:832)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.processUpdates(AmqpProvider.java:781)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider.access$1500(AmqpProvider.java:87)
   at 
 org.apache.qpid.jms.provider.amqp.AmqpProvider$16.run(AmqpProvider.java:667)
   at 
 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
   at java.util.concurrent.FutureTask.run(FutureTask.java:262)
   at