diff --git a/src/charon/sa/tasks/child_create.c b/src/charon/sa/tasks/child_create.c index 164bc076e..925df0400 100644 --- a/src/charon/sa/tasks/child_create.c +++ b/src/charon/sa/tasks/child_create.c @@ -242,7 +242,9 @@ static bool allocate_spi(private_child_create_t *this) static status_t select_and_install(private_child_create_t *this, bool no_dh) { status_t status; - chunk_t nonce_i, nonce_r, encr_i, integ_i, encr_r, integ_r; + chunk_t nonce_i, nonce_r; + chunk_t encr_i = chunk_empty, encr_r = chunk_empty; + chunk_t integ_i = chunk_empty, integ_r = chunk_empty; linked_list_t *my_ts, *other_ts; host_t *me, *other, *other_vip, *my_vip; diff --git a/src/libstrongswan/chunk.h b/src/libstrongswan/chunk.h index d6c2e805b..0487fa008 100644 --- a/src/libstrongswan/chunk.h +++ b/src/libstrongswan/chunk.h @@ -151,8 +151,11 @@ static inline void chunk_free(chunk_t *chunk) */ static inline void chunk_clear(chunk_t *chunk) { - memset(chunk->ptr, 0, chunk->len); - chunk_free(chunk); + if (chunk->ptr) + { + memset(chunk->ptr, 0, chunk->len); + chunk_free(chunk); + } } /**