aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/encoding/message.c
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2011-12-20 16:07:00 +0100
committerMartin Willi <martin@revosec.ch>2012-03-20 17:31:29 +0100
commit82b1e5e270a2cd15edede0cbb216d7e9be1152d4 (patch)
tree80a9c72acafe08e2b13832d038704f385807ec2f /src/libcharon/encoding/message.c
parent53300badedeab783b0965bbae3253e092f281c5e (diff)
downloadstrongswan-82b1e5e270a2cd15edede0cbb216d7e9be1152d4.tar.bz2
strongswan-82b1e5e270a2cd15edede0cbb216d7e9be1152d4.tar.xz
Accept NULL as keymat when generating a message
Diffstat (limited to 'src/libcharon/encoding/message.c')
-rw-r--r--src/libcharon/encoding/message.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/libcharon/encoding/message.c b/src/libcharon/encoding/message.c
index cf2a66efa..2bf44cb3a 100644
--- a/src/libcharon/encoding/message.c
+++ b/src/libcharon/encoding/message.c
@@ -1419,8 +1419,8 @@ METHOD(message_t, generate, status_t,
encryption_payload_t *encryption = NULL;
payload_type_t next_type;
enumerator_t *enumerator;
- aead_t *aead;
- chunk_t chunk;
+ aead_t *aead = NULL;
+ chunk_t chunk, hash = chunk_empty;
char str[BUF_LEN];
u_int32_t *lenpos;
bool encrypted = FALSE, *reserved;
@@ -1458,7 +1458,10 @@ METHOD(message_t, generate, status_t,
else
{
/* get a hash for this message, if any is required */
- chunk_t hash = keymat_v1->get_hash_phase2(keymat_v1, &this->public);
+ if (keymat_v1)
+ {
+ hash = keymat_v1->get_hash_phase2(keymat_v1, &this->public);
+ }
if (hash.ptr)
{ /* insert a HASH payload as first payload */
hash_payload_t *hash_payload;
@@ -1494,7 +1497,10 @@ METHOD(message_t, generate, status_t,
DBG1(DBG_ENC, "generating %s", get_string(this, str, sizeof(str)));
- aead = keymat->get_aead(keymat, FALSE);
+ if (keymat)
+ {
+ aead = keymat->get_aead(keymat, FALSE);
+ }
if (aead && encrypted)
{
encryption = wrap_payloads(this);