PROTON-1055: Change SASL PLAIN for better interop: - Don't send a username, because it is always derived from the authentication id (some servers get erroneously confused when the username is present)
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/9e852c5f Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/9e852c5f Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/9e852c5f Branch: refs/heads/0.12.x Commit: 9e852c5f1080007e258790ec138c047adea7126c Parents: f936737 Author: Andrew Stitcher <[email protected]> Authored: Mon Dec 7 17:28:48 2015 -0500 Committer: Andrew Stitcher <[email protected]> Committed: Thu Jan 28 10:24:09 2016 -0500 ---------------------------------------------------------------------- proton-c/src/sasl/cyrus_sasl.c | 4 ++-- proton-c/src/sasl/none_sasl.c | 11 +++++------ 2 files changed, 7 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/9e852c5f/proton-c/src/sasl/cyrus_sasl.c ---------------------------------------------------------------------- diff --git a/proton-c/src/sasl/cyrus_sasl.c b/proton-c/src/sasl/cyrus_sasl.c index 809bad5..4af1f52 100644 --- a/proton-c/src/sasl/cyrus_sasl.c +++ b/proton-c/src/sasl/cyrus_sasl.c @@ -53,8 +53,8 @@ static void pni_cyrus_interact(pni_sasl_t *sasl, sasl_interact_t *interact) for (sasl_interact_t *i = interact; i->id!=SASL_CB_LIST_END; i++) { switch (i->id) { case SASL_CB_USER: - i->result = sasl->username; - i->len = strlen(sasl->username); + i->result = 0; + i->len = 0; break; case SASL_CB_AUTHNAME: i->result = sasl->username; http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/9e852c5f/proton-c/src/sasl/none_sasl.c ---------------------------------------------------------------------- diff --git a/proton-c/src/sasl/none_sasl.c b/proton-c/src/sasl/none_sasl.c index 674326f..d1ee67f 100644 --- a/proton-c/src/sasl/none_sasl.c +++ b/proton-c/src/sasl/none_sasl.c @@ -81,17 +81,16 @@ bool pni_process_mechanisms(pn_transport_t *transport, const char *mechs) transport->sasl->selected_mechanism = pn_strdup(PLAIN); size_t usize = strlen(transport->sasl->username); size_t psize = strlen(transport->sasl->password); - size_t size = 2*usize + psize + 2; + size_t size = usize + psize + 2; char *iresp = (char *) malloc(size); if (!iresp) return false; transport->sasl->impl_context = iresp; - memmove(iresp, transport->sasl->username, usize); - iresp[usize] = 0; - memmove(iresp + usize + 1, transport->sasl->username, usize); - iresp[2*usize + 1] = 0; - memmove(iresp + 2*usize + 2, transport->sasl->password, psize); + iresp[0] = 0; + memmove(&iresp[1], transport->sasl->username, usize); + iresp[usize + 1] = 0; + memmove(&iresp[usize + 2], transport->sasl->password, psize); transport->sasl->bytes_out.start = iresp; transport->sasl->bytes_out.size = size; --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
