From 4c199e6f815ffc82e4dccc90d359d32ae5ebdddf Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Thu, 7 Jul 2011 12:31:02 +0200 Subject: Add a non-clonig variant of eap_payload_create_data --- src/libcharon/encoding/payloads/eap_payload.c | 12 ++++++++++++ src/libcharon/encoding/payloads/eap_payload.h | 13 +++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) (limited to 'src/libcharon/encoding') diff --git a/src/libcharon/encoding/payloads/eap_payload.c b/src/libcharon/encoding/payloads/eap_payload.c index eafb668b6..cacaef222 100644 --- a/src/libcharon/encoding/payloads/eap_payload.c +++ b/src/libcharon/encoding/payloads/eap_payload.c @@ -281,6 +281,18 @@ eap_payload_t *eap_payload_create_data(chunk_t data) return this; } +/* + * Described in header + */ +eap_payload_t *eap_payload_create_data_own(chunk_t data) +{ + eap_payload_t *this = eap_payload_create(); + + this->set_data(this, data); + free(data.ptr); + return this; +} + /* * Described in header */ diff --git a/src/libcharon/encoding/payloads/eap_payload.h b/src/libcharon/encoding/payloads/eap_payload.h index 0bde4b15e..60d9c99d2 100644 --- a/src/libcharon/encoding/payloads/eap_payload.h +++ b/src/libcharon/encoding/payloads/eap_payload.h @@ -95,17 +95,26 @@ struct eap_payload_t { /** * Creates an empty eap_payload_t object. * - * @return eap_payload_t object + * @return eap_payload_t object */ eap_payload_t *eap_payload_create(void); /** * Creates an eap_payload_t object with data. * - * @return eap_payload_t object + * @param data data, gets cloned + * @return eap_payload_t object */ eap_payload_t *eap_payload_create_data(chunk_t data); +/** + * Creates an eap_payload_t object with data, owning the data. + * + * @param data data on heap, gets owned and freed + * @return eap_payload_t object + */ +eap_payload_t *eap_payload_create_data_own(chunk_t data); + /** * Creates an eap_payload_t object with a code. * -- cgit v1.2.3