diff --git a/src/net/common/sessiondata.cpp b/src/net/common/sessiondata.cpp index 413ecf82..f48fb967 100644 --- a/src/net/common/sessiondata.cpp +++ b/src/net/common/sessiondata.cpp @@ -97,8 +97,9 @@ SessionData::CreateClientAuthSession(Gsasl *context, const string &userName, con if (errorCode == GSASL_OK) { char *base64User = NULL; - gsasl_base64_to(userName.c_str(), userName.length(), &base64User, NULL); - gsasl_property_set(m_authSession, GSASL_AUTHID, base64User); + size_t lenBase64User = 0; + gsasl_base64_to(userName.c_str(), userName.length(), &base64User, &lenBase64User); + gsasl_property_set(m_authSession, GSASL_AUTHID, string(base64User, lenBase64User).c_str()); gsasl_free(base64User); gsasl_property_set(m_authSession, GSASL_PASSWORD, password.c_str()); @@ -142,11 +143,12 @@ SessionData::AuthGetUser() const if (m_authSession) { char *base64User = NULL; + size_t lenBase64User = 0; const char *tmpUser = gsasl_property_fast(m_authSession, GSASL_AUTHID); - gsasl_base64_from(tmpUser, strlen(tmpUser), &base64User, NULL); + gsasl_base64_from(tmpUser, strlen(tmpUser), &base64User, &lenBase64User); if (base64User) { - retStr = base64User; + retStr = string(base64User, lenBase64User); gsasl_free(base64User); } }