summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/libtdekrb/src/tdekrbclientsocket.cpp27
-rw-r--r--lib/libtdekrb/src/tdekrbclientsocket.h6
-rw-r--r--lib/libtdekrb/src/tdekrbserversocket.cpp27
-rw-r--r--lib/libtdekrb/src/tdekrbserversocket.h6
-rw-r--r--lib/libtqtrla/src/Makefile.am12
5 files changed, 44 insertions, 34 deletions
diff --git a/lib/libtdekrb/src/tdekrbclientsocket.cpp b/lib/libtdekrb/src/tdekrbclientsocket.cpp
index c9db10a..053dd23 100644
--- a/lib/libtdekrb/src/tdekrbclientsocket.cpp
+++ b/lib/libtdekrb/src/tdekrbclientsocket.cpp
@@ -115,8 +115,8 @@ void TDEKerberosClientSocket::setServerFQDN(TQString name) {
m_serverFQDN = name;
}
-Q_LONG TDEKerberosClientSocket::readBlock(char *data, Q_ULONG maxlen) {
- Q_LONG ret;
+TQ_LONG TDEKerberosClientSocket::readBlock(char *data, TQ_ULONG maxlen) {
+ TQ_LONG ret;
if (m_kerberosRequested) {
ret = receiveEncryptedData(data, maxlen);
@@ -128,8 +128,8 @@ Q_LONG TDEKerberosClientSocket::readBlock(char *data, Q_ULONG maxlen) {
return ret;
}
-Q_LONG TDEKerberosClientSocket::writeBlock(const char *data, Q_ULONG len) {
- Q_LONG ret;
+TQ_LONG TDEKerberosClientSocket::writeBlock(const char *data, TQ_ULONG len) {
+ TQ_LONG ret;
if (m_kerberosRequested) {
ret = transmitEncryptedData(socket(), data, len);
@@ -141,11 +141,11 @@ Q_LONG TDEKerberosClientSocket::writeBlock(const char *data, Q_ULONG len) {
return ret;
}
-Q_LONG TDEKerberosClientSocket::readLine(char *data, Q_ULONG maxlen) {
- Q_LONG ret;
+TQ_LONG TDEKerberosClientSocket::readLine(char *data, TQ_ULONG maxlen) {
+ TQ_LONG ret;
if (m_kerberosRequested) {
- ret = getSASLDataFromNetwork(data, maxlen);
+ ret = receiveEncryptedData(data, maxlen);
}
else {
ret = TQSocket::readLine(data, maxlen);
@@ -236,7 +236,6 @@ unsigned int TDEKerberosClientSocket::getSASLDataFromNetwork(char *buf, int trun
}
if (len >= (ba.size()-1)) {
ba.resize(ba.size()+2048);
- break;
}
}
@@ -272,16 +271,22 @@ int TDEKerberosClientSocket::receiveEncryptedData(char *buf, int trunclen) {
int result;
int len;
- len = getSASLDataFromNetwork(buf, trunclen);
+ char *encbuf = (char*)malloc(m_negotiatedMaxBufferSize);
+ len = getSASLDataFromNetwork(encbuf, m_negotiatedMaxBufferSize);
if (len >= 0) {
- result=sasl_decode(saslData->m_krbConnection, buf, len, &recv_data, &recv_len);
+ result=sasl_decode(saslData->m_krbConnection, encbuf, len, &recv_data, &recv_len);
if (result != SASL_OK) {
+ free(encbuf);
printf("[ERROR] Decrypting data returned %s (%d)\n\r", sasl_errdetail(saslData->m_krbConnection), result);
return -1;
}
- strncpy(buf, recv_data, trunclen);
+ if (recv_len > trunclen) {
+ recv_len = trunclen;
+ }
+ memcpy(buf, recv_data, recv_len);
}
+ free(encbuf);
return 0;
}
diff --git a/lib/libtdekrb/src/tdekrbclientsocket.h b/lib/libtdekrb/src/tdekrbclientsocket.h
index b010bc5..1cea942 100644
--- a/lib/libtdekrb/src/tdekrbclientsocket.h
+++ b/lib/libtdekrb/src/tdekrbclientsocket.h
@@ -37,9 +37,9 @@ class TDEKerberosClientSocket : public TQSocket
bool open(int mode);
void close();
- Q_LONG readBlock(char *data, Q_ULONG maxlen);
- Q_LONG writeBlock(const char *data, Q_ULONG len);
- Q_LONG readLine(char *data, Q_ULONG maxlen);
+ TQ_LONG readBlock(char *data, TQ_ULONG maxlen);
+ TQ_LONG writeBlock(const char *data, TQ_ULONG len);
+ TQ_LONG readLine(char *data, TQ_ULONG maxlen);
TQString readLine();
void writeLine(TQString);
diff --git a/lib/libtdekrb/src/tdekrbserversocket.cpp b/lib/libtdekrb/src/tdekrbserversocket.cpp
index 0704aeb..1d7cfbf 100644
--- a/lib/libtdekrb/src/tdekrbserversocket.cpp
+++ b/lib/libtdekrb/src/tdekrbserversocket.cpp
@@ -115,8 +115,8 @@ void TDEKerberosServerSocket::setServerFQDN(TQString name) {
m_serverFQDN = name;
}
-Q_LONG TDEKerberosServerSocket::readBlock(char *data, Q_ULONG maxlen) {
- Q_LONG ret;
+TQ_LONG TDEKerberosServerSocket::readBlock(char *data, TQ_ULONG maxlen) {
+ TQ_LONG ret;
if (m_kerberosRequested) {
ret = receiveEncryptedData(data, maxlen);
@@ -128,8 +128,8 @@ Q_LONG TDEKerberosServerSocket::readBlock(char *data, Q_ULONG maxlen) {
return ret;
}
-Q_LONG TDEKerberosServerSocket::writeBlock(const char *data, Q_ULONG len) {
- Q_LONG ret;
+TQ_LONG TDEKerberosServerSocket::writeBlock(const char *data, TQ_ULONG len) {
+ TQ_LONG ret;
if (m_kerberosRequested) {
ret = transmitEncryptedData(socket(), data, len);
@@ -141,11 +141,11 @@ Q_LONG TDEKerberosServerSocket::writeBlock(const char *data, Q_ULONG len) {
return ret;
}
-Q_LONG TDEKerberosServerSocket::readLine(char *data, Q_ULONG maxlen) {
- Q_LONG ret;
+TQ_LONG TDEKerberosServerSocket::readLine(char *data, TQ_ULONG maxlen) {
+ TQ_LONG ret;
if (m_kerberosRequested) {
- ret = getSASLDataFromNetwork(data, maxlen);
+ ret = receiveEncryptedData(data, maxlen);
}
else {
ret = TQSocket::readLine(data, maxlen);
@@ -236,7 +236,6 @@ unsigned int TDEKerberosServerSocket::getSASLDataFromNetwork(char *buf, int trun
}
if (len >= (ba.size()-1)) {
ba.resize(ba.size()+2048);
- break;
}
}
@@ -272,16 +271,22 @@ int TDEKerberosServerSocket::receiveEncryptedData(char *buf, int trunclen) {
int result;
int len;
- len = getSASLDataFromNetwork(buf, trunclen);
+ char *encbuf = (char*)malloc(m_negotiatedMaxBufferSize);
+ len = getSASLDataFromNetwork(encbuf, m_negotiatedMaxBufferSize);
if (len >= 0) {
- result=sasl_decode(saslData->m_krbConnection, buf, len, &recv_data, &recv_len);
+ result=sasl_decode(saslData->m_krbConnection, encbuf, len, &recv_data, &recv_len);
if (result != SASL_OK) {
+ free(encbuf);
printf("[ERROR] Decrypting data returned %s (%d)\n\r", sasl_errdetail(saslData->m_krbConnection), result);
return -1;
}
- strncpy(buf, recv_data, trunclen);
+ if (recv_len > trunclen) {
+ recv_len = trunclen;
+ }
+ memcpy(buf, recv_data, recv_len);
}
+ free(encbuf);
return 0;
}
diff --git a/lib/libtdekrb/src/tdekrbserversocket.h b/lib/libtdekrb/src/tdekrbserversocket.h
index 16d6483..04f70b9 100644
--- a/lib/libtdekrb/src/tdekrbserversocket.h
+++ b/lib/libtdekrb/src/tdekrbserversocket.h
@@ -37,9 +37,9 @@ class TDEKerberosServerSocket : public TQSocket
bool open(int mode);
void close();
- Q_LONG readBlock(char *data, Q_ULONG maxlen);
- Q_LONG writeBlock(const char *data, Q_ULONG len);
- Q_LONG readLine(char *data, Q_ULONG maxlen);
+ TQ_LONG readBlock(char *data, TQ_ULONG maxlen);
+ TQ_LONG writeBlock(const char *data, TQ_ULONG len);
+ TQ_LONG readLine(char *data, TQ_ULONG maxlen);
TQString readLine();
void writeLine(TQString);
diff --git a/lib/libtqtrla/src/Makefile.am b/lib/libtqtrla/src/Makefile.am
index b0b10cf..5c8888c 100644
--- a/lib/libtqtrla/src/Makefile.am
+++ b/lib/libtqtrla/src/Makefile.am
@@ -1,11 +1,11 @@
-INCLUDES = $(all_includes) -I/usr/include/sasl
+INCLUDES = $(all_includes)
METASOURCES = AUTO
# Create a shared library file
-lib_LTLIBRARIES = libtdekrbsocket.la
+lib_LTLIBRARIES = libtqtrla.la
-include_HEADERS = tdekrbclientsocket.h tdekrbserversocket.h
+include_HEADERS = tqtrla.h
-libtdekrbsocket_la_SOURCES = tdekrbclientsocket.cpp tdekrbserversocket.cpp
-libtdekrbsocket_la_LIBADD = -lkio $(LIB_TDEUI) -lsasl2
-libtdekrbsocket_la_LDFLAGS = -avoid-version -module -no-undefined $(all_libraries) \ No newline at end of file
+libtqtrla_la_SOURCES = tqtrla.cpp
+libtqtrla_la_LIBADD = -lkio $(LIB_TDEUI)
+libtqtrla_la_LDFLAGS = -avoid-version -module -no-undefined $(all_libraries) \ No newline at end of file