diff options
Diffstat (limited to 'lib/libtdekrb/src')
| -rw-r--r-- | lib/libtdekrb/src/tdekrbclientsocket.cpp | 2 | ||||
| -rw-r--r-- | lib/libtdekrb/src/tdekrbserversocket.cpp | 26 | ||||
| -rw-r--r-- | lib/libtdekrb/src/tdekrbserversocket.h | 1 | 
3 files changed, 14 insertions, 15 deletions
| diff --git a/lib/libtdekrb/src/tdekrbclientsocket.cpp b/lib/libtdekrb/src/tdekrbclientsocket.cpp index ac1a1bc..a286ff6 100644 --- a/lib/libtdekrb/src/tdekrbclientsocket.cpp +++ b/lib/libtdekrb/src/tdekrbclientsocket.cpp @@ -883,7 +883,7 @@ void TDEKerberosClientSocket::continueKerberosInitialization() {  int TDEKerberosClientSocket::initializeKerberosInterface() {  	if (state() != TQSocket::Connected) { -		saslData->m_krbConnection = false; +		freeKerberosConnection();  		return -1;  	} diff --git a/lib/libtdekrb/src/tdekrbserversocket.cpp b/lib/libtdekrb/src/tdekrbserversocket.cpp index 77f4750..aa281cc 100644 --- a/lib/libtdekrb/src/tdekrbserversocket.cpp +++ b/lib/libtdekrb/src/tdekrbserversocket.cpp @@ -717,7 +717,6 @@ void TDEKerberosServerSocket::setStatusMessage(TQString message) {  void TDEKerberosServerSocket::continueKerberosInitialization() {  	int slen;  	char buf[NET_SEC_BUF_SIZE]; -	unsigned int len;  	sasl_ssf_t *ssf;  	if (m_krbInitRunning) { @@ -734,18 +733,18 @@ void TDEKerberosServerSocket::continueKerberosInitialization() {  							setStatusMessage(i18n("Kerberos connection failed"));  							return;  						} -						len = slen; -						if (strlen(buf) < len) { +						m_krbInitLastLen = slen; +						if (strlen(buf) < m_krbInitLastLen) {  							printf("[DEBUG] Initial response received\n\r");  							// An initial response is present  							m_krbInitData = buf + strlen(buf) + 1; -							len = len - (unsigned) strlen(buf) - 1; +							m_krbInitLastLen = m_krbInitLastLen - (unsigned) strlen(buf) - 1;  						}  						else {  							m_krbInitData = NULL; -							len = 0; +							m_krbInitLastLen = 0;  						} -						m_krbInitResult = sasl_server_start(saslData->m_krbConnection, buf, m_krbInitData, len, &m_krbInitData, &len); +						m_krbInitResult = sasl_server_start(saslData->m_krbConnection, buf, m_krbInitData, m_krbInitLastLen, &m_krbInitData, &m_krbInitLastLen);  						if (m_krbInitResult != SASL_OK && m_krbInitResult != SASL_CONTINUE) {  							printf("[ERROR] Starting SASL negotiation returned %s (%d)\n\r", safe_sasl_errdetail(saslData->m_krbConnection), m_krbInitResult);  							freeKerberosConnection(); @@ -767,7 +766,7 @@ void TDEKerberosServerSocket::continueKerberosInitialization() {  					if (m_krbInitResult == SASL_CONTINUE) {  						if (m_krbInitData) {  							printf("[DEBUG] Sending response...\n\r"); -							sendSASLDataToNetwork(m_krbInitData, len); +							sendSASLDataToNetwork(m_krbInitData, m_krbInitLastLen);  						}  						else {  							printf("[ERROR] No data to send!\n\r"); @@ -803,9 +802,9 @@ void TDEKerberosServerSocket::continueKerberosInitialization() {  							setStatusMessage(i18n("Kerberos connection failed"));  							return;  						} -						len = slen; +						m_krbInitLastLen = slen;  						m_krbInitData = NULL; -						m_krbInitResult = sasl_server_step(saslData->m_krbConnection, buf, len, &m_krbInitData, &len); +						m_krbInitResult = sasl_server_step(saslData->m_krbConnection, buf, m_krbInitLastLen, &m_krbInitData, &m_krbInitLastLen);  						if (m_krbInitResult != SASL_OK && m_krbInitResult != SASL_CONTINUE) {  							printf("[ERROR] Performing SASL negotiation returned %s (%d)\n\r", safe_sasl_errdetail(saslData->m_krbConnection), m_krbInitResult);  							freeKerberosConnection(); @@ -828,7 +827,7 @@ void TDEKerberosServerSocket::continueKerberosInitialization() {  				if (state() == TQSocket::Connected) {  					if(m_krbInitServerLast && m_krbInitData) {  						printf("[DEBUG] Additional information needed to be sent\n\r"); -						sendSASLDataToNetwork(m_krbInitData, len); +						sendSASLDataToNetwork(m_krbInitData, m_krbInitLastLen);  					}  					m_krbInitResult = sasl_getprop(saslData->m_krbConnection, SASL_USERNAME, (const void **)&m_krbInitData); @@ -889,7 +888,7 @@ void TDEKerberosServerSocket::continueKerberosInitialization() {  int TDEKerberosServerSocket::initializeKerberosInterface() {  	if (state() != TQSocket::Connected) { -		saslData->m_krbConnection = false; +		freeKerberosConnection();  		return -1;  	} @@ -899,7 +898,6 @@ int TDEKerberosServerSocket::initializeKerberosInterface() {  	sasl_security_properties_t secprops;  	const char *ext_authid = NULL;  	int count; -	unsigned int len;  	// FIXME  	// Populate these fields! @@ -948,7 +946,7 @@ int TDEKerberosServerSocket::initializeKerberosInterface() {  	}  	puts("[DEBUG] Generating client mechanism list..."); -	m_krbInitResult = sasl_listmech(saslData->m_krbConnection, ext_authid, NULL, " ", NULL, &m_krbInitData, &len, &count); +	m_krbInitResult = sasl_listmech(saslData->m_krbConnection, ext_authid, NULL, " ", NULL, &m_krbInitData, &m_krbInitLastLen, &count);  	if (m_krbInitResult != SASL_OK) {  		printf("[ERROR] Generating client mechanism list returned %s (%d)\n\r", safe_sasl_errdetail(saslData->m_krbConnection), m_krbInitResult);  		freeKerberosConnection(); @@ -956,7 +954,7 @@ int TDEKerberosServerSocket::initializeKerberosInterface() {  	}  	printf("[DEBUG] Sending list of %d mechanism(s)\n\r", count); -	sendSASLDataToNetwork(m_krbInitData, len); +	sendSASLDataToNetwork(m_krbInitData, m_krbInitLastLen);  	m_krbInitRunning = true;  	m_krbInitState = 0; diff --git a/lib/libtdekrb/src/tdekrbserversocket.h b/lib/libtdekrb/src/tdekrbserversocket.h index 61e6255..0394b49 100644 --- a/lib/libtdekrb/src/tdekrbserversocket.h +++ b/lib/libtdekrb/src/tdekrbserversocket.h @@ -114,6 +114,7 @@ class TDEKerberosServerSocket : public TQSocket  		unsigned int m_negotiatedMaxBufferSize;  		int m_krbInitResult;  		int m_krbInitServerLast; +		unsigned int m_krbInitLastLen;  		const char *m_krbInitData;  }; | 
