- fixed some memleaks/freebugs
- leak detective works almost usable now (?!)
This commit is contained in:
@@ -330,7 +330,6 @@ static policy_t *clone(private_policy_t *this)
|
|||||||
}
|
}
|
||||||
iterator->destroy(iterator);
|
iterator->destroy(iterator);
|
||||||
|
|
||||||
clone->name = strdup(this->name);
|
|
||||||
return &clone->public;
|
return &clone->public;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ static status_t receiver(private_socket_t *this, packet_t **packet)
|
|||||||
{
|
{
|
||||||
char buffer[MAX_PACKET];
|
char buffer[MAX_PACKET];
|
||||||
chunk_t data;
|
chunk_t data;
|
||||||
packet_t *pkt = packet_create();
|
packet_t *pkt;
|
||||||
host_t *source, *dest;
|
host_t *source, *dest;
|
||||||
int bytes_read = 0;
|
int bytes_read = 0;
|
||||||
|
|
||||||
@@ -164,16 +164,12 @@ static status_t receiver(private_socket_t *this, packet_t **packet)
|
|||||||
}
|
}
|
||||||
iterator->destroy(iterator);
|
iterator->destroy(iterator);
|
||||||
|
|
||||||
/* add packet destroy handler for cancellation, enable cancellation */
|
|
||||||
pthread_cleanup_push((void(*)(void*))pkt->destroy, (void*)pkt);
|
|
||||||
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &oldstate);
|
|
||||||
|
|
||||||
this->logger->log(this->logger, CONTROL|LEVEL1, "waiting on sockets");
|
this->logger->log(this->logger, CONTROL|LEVEL1, "waiting on sockets");
|
||||||
bytes_read = select(max_fd, &readfds, NULL, NULL, NULL);
|
|
||||||
|
|
||||||
/* reset cancellation, remove packet destroy handler (without executing) */
|
/* allow cancellation while select()-ing */
|
||||||
|
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &oldstate);
|
||||||
|
bytes_read = select(max_fd, &readfds, NULL, NULL, NULL);
|
||||||
pthread_setcancelstate(oldstate, NULL);
|
pthread_setcancelstate(oldstate, NULL);
|
||||||
pthread_cleanup_pop(0);
|
|
||||||
|
|
||||||
/* read on the first nonblocking socket */
|
/* read on the first nonblocking socket */
|
||||||
bytes_read = 0;
|
bytes_read = 0;
|
||||||
@@ -204,6 +200,7 @@ static status_t receiver(private_socket_t *this, packet_t **packet)
|
|||||||
u_int16_t dest_port = ntohs(*(u_int16_t*)(buffer + 22));
|
u_int16_t dest_port = ntohs(*(u_int16_t*)(buffer + 22));
|
||||||
source = host_create_from_chunk(AF_INET, source_chunk, source_port);
|
source = host_create_from_chunk(AF_INET, source_chunk, source_port);
|
||||||
dest = host_create_from_chunk(AF_INET, dest_chunk, dest_port);
|
dest = host_create_from_chunk(AF_INET, dest_chunk, dest_port);
|
||||||
|
pkt = packet_create();
|
||||||
pkt->set_source(pkt, source);
|
pkt->set_source(pkt, source);
|
||||||
pkt->set_destination(pkt, dest);
|
pkt->set_destination(pkt, dest);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -356,6 +356,7 @@ static status_t compute_auth_data (private_authenticator_t *this,
|
|||||||
this->logger->log(this->logger, CONTROL, "looking for private key with keyid %s", buf);
|
this->logger->log(this->logger, CONTROL, "looking for private key with keyid %s", buf);
|
||||||
|
|
||||||
my_key = charon->credentials->get_rsa_private_key(charon->credentials, my_pubkey);
|
my_key = charon->credentials->get_rsa_private_key(charon->credentials, my_pubkey);
|
||||||
|
my_pubkey->destroy(my_pubkey);
|
||||||
if (my_key == NULL)
|
if (my_key == NULL)
|
||||||
{
|
{
|
||||||
char buf[BUF_LEN];
|
char buf[BUF_LEN];
|
||||||
|
|||||||
Reference in New Issue
Block a user