diff options
author | Martin Willi <martin@revosec.ch> | 2011-12-20 16:07:00 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2012-03-20 17:31:29 +0100 |
commit | 82b1e5e270a2cd15edede0cbb216d7e9be1152d4 (patch) | |
tree | 80a9c72acafe08e2b13832d038704f385807ec2f /src/libcharon/encoding/message.c | |
parent | 53300badedeab783b0965bbae3253e092f281c5e (diff) | |
download | strongswan-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.c | 14 |
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); |