- fixed memory handling problems when using TLS

pull/162/head
Michael Zillgith 6 years ago
parent 9b7a2f086e
commit dabea5cc4c

@ -474,10 +474,9 @@ TLSSocket_write(TLSSocket self, uint8_t* buf, int size)
void void
TLSSocket_close(TLSSocket self) TLSSocket_close(TLSSocket self)
{ {
if (self) {
int ret; int ret;
//TODO add timeout?
while ((ret = mbedtls_ssl_close_notify(&(self->ssl))) < 0) while ((ret = mbedtls_ssl_close_notify(&(self->ssl))) < 0)
{ {
if ((ret != MBEDTLS_ERR_SSL_WANT_READ) && (ret != MBEDTLS_ERR_SSL_WANT_WRITE)) if ((ret != MBEDTLS_ERR_SSL_WANT_READ) && (ret != MBEDTLS_ERR_SSL_WANT_WRITE))
@ -493,4 +492,5 @@ TLSSocket_close(TLSSocket self)
mbedtls_ssl_free(&(self->ssl)); mbedtls_ssl_free(&(self->ssl));
GLOBAL_FREEMEM(self); GLOBAL_FREEMEM(self);
}
} }

@ -92,15 +92,16 @@ struct sIsoConnection
static void static void
IsoConnection_releaseAllocatedMemory(IsoConnection self) IsoConnection_releaseAllocatedMemory(IsoConnection self)
{ {
if (self->socket)
Socket_destroy(self->socket);
#if (CONFIG_MMS_SUPPORT_TLS == 1) #if (CONFIG_MMS_SUPPORT_TLS == 1)
if (IsoServer_getTLSConfiguration(self->isoServer) != NULL) { if (IsoServer_getTLSConfiguration(self->isoServer) != NULL) {
TLSSocket_close(self->tlsSocket); TLSSocket_close(self->tlsSocket);
self->tlsSocket = NULL;
} }
#endif /* (CONFIG_MMS_SUPPORT_TLS == 1) */ #endif /* (CONFIG_MMS_SUPPORT_TLS == 1) */
if (self->socket)
Socket_destroy(self->socket);
GLOBAL_FREEMEM(self->session); GLOBAL_FREEMEM(self->session);
GLOBAL_FREEMEM(self->presentation); GLOBAL_FREEMEM(self->presentation);
AcseConnection_destroy(self->acseConnection); AcseConnection_destroy(self->acseConnection);
@ -662,8 +663,10 @@ IsoConnection_close(IsoConnection self)
self->socket = NULL; self->socket = NULL;
#if (CONFIG_MMS_SUPPORT_TLS == 1) #if (CONFIG_MMS_SUPPORT_TLS == 1)
if (self->tlsSocket) if (self->tlsSocket) {
TLSSocket_close(self->tlsSocket); TLSSocket_close(self->tlsSocket);
self->tlsSocket = NULL;
}
#endif #endif
Socket_destroy(socket); Socket_destroy(socket);

Loading…
Cancel
Save