aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2011-11-18 17:49:53 +0100
committerMartin Willi <martin@revosec.ch>2012-03-20 17:30:44 +0100
commitc311d22d0f62b68bf0e69c110d94b569788c0fd3 (patch)
tree2352bd781f9d902fc0be2c1a6bc5d92f3b709c8a
parent31fc14e394203be67a711801819a73a7365f9800 (diff)
downloadstrongswan-c311d22d0f62b68bf0e69c110d94b569788c0fd3.tar.bz2
strongswan-c311d22d0f62b68bf0e69c110d94b569788c0fd3.tar.xz
Don't clone chunk in message.get_packet_data
-rw-r--r--src/conftest/hooks/pretend_auth.c2
-rw-r--r--src/libcharon/encoding/message.c2
-rw-r--r--src/libcharon/encoding/message.h4
-rw-r--r--src/libcharon/sa/ike_sa_manager.c7
4 files changed, 7 insertions, 8 deletions
diff --git a/src/conftest/hooks/pretend_auth.c b/src/conftest/hooks/pretend_auth.c
index dd6ab9959..ff99900f2 100644
--- a/src/conftest/hooks/pretend_auth.c
+++ b/src/conftest/hooks/pretend_auth.c
@@ -135,7 +135,7 @@ static void process_auth_request(private_pretend_auth_t *this,
static void process_init_response(private_pretend_auth_t *this,
ike_sa_t *ike_sa, message_t *message)
{
- this->ike_init = message->get_packet_data(message);
+ this->ike_init = chunk_clone(message->get_packet_data(message));
}
/**
diff --git a/src/libcharon/encoding/message.c b/src/libcharon/encoding/message.c
index 0789da4b7..afa9b1956 100644
--- a/src/libcharon/encoding/message.c
+++ b/src/libcharon/encoding/message.c
@@ -1404,7 +1404,7 @@ METHOD(message_t, get_packet_data, chunk_t,
{
return chunk_empty;
}
- return chunk_clone(this->packet->get_data(this->packet));
+ return this->packet->get_data(this->packet);
}
METHOD(message_t, parse_header, status_t,
diff --git a/src/libcharon/encoding/message.h b/src/libcharon/encoding/message.h
index 20f3c16d7..dd18b4bd9 100644
--- a/src/libcharon/encoding/message.h
+++ b/src/libcharon/encoding/message.h
@@ -344,9 +344,9 @@ struct message_t {
packet_t * (*get_packet) (message_t *this);
/**
- * Returns a clone of the internal stored packet_t data.
+ * Returns a chunk pointing to internal packet_t data.
*
- * @return clone of the internal stored packet_t data.
+ * @return packet data.
*/
chunk_t (*get_packet_data) (message_t *this);
diff --git a/src/libcharon/sa/ike_sa_manager.c b/src/libcharon/sa/ike_sa_manager.c
index 62f9cc971..556459064 100644
--- a/src/libcharon/sa/ike_sa_manager.c
+++ b/src/libcharon/sa/ike_sa_manager.c
@@ -1004,11 +1004,10 @@ METHOD(ike_sa_manager_t, checkout_by_message, ike_sa_t*,
if (is_init && this->hasher)
{
/* First request. Check for an IKE_SA with such a message hash. */
- chunk_t data, hash;
+ chunk_t hash;
- data = message->get_packet_data(message);
- this->hasher->allocate_hash(this->hasher, data, &hash);
- chunk_free(&data);
+ this->hasher->allocate_hash(this->hasher,
+ message->get_packet_data(message), &hash);
if (get_entry_by_hash(this, id, hash, &entry, &segment) == SUCCESS)
{