Avoid potentially unaligned half-word read
This commit is contained in:
@@ -1011,15 +1011,18 @@ static status_t process_i(private_child_create_t *this, message_t *message)
|
|||||||
case INVALID_KE_PAYLOAD:
|
case INVALID_KE_PAYLOAD:
|
||||||
{
|
{
|
||||||
chunk_t data;
|
chunk_t data;
|
||||||
diffie_hellman_group_t bad_group;
|
u_int16_t group = MODP_NONE;
|
||||||
|
|
||||||
bad_group = this->dh_group;
|
|
||||||
data = notify->get_notification_data(notify);
|
data = notify->get_notification_data(notify);
|
||||||
this->dh_group = ntohs(*((u_int16_t*)data.ptr));
|
if (data.len == sizeof(group))
|
||||||
|
{
|
||||||
|
memcpy(&group, data.ptr, data.len);
|
||||||
|
group = ntohs(group);
|
||||||
|
}
|
||||||
DBG1(DBG_IKE, "peer didn't accept DH group %N, "
|
DBG1(DBG_IKE, "peer didn't accept DH group %N, "
|
||||||
"it requested %N", diffie_hellman_group_names,
|
"it requested %N", diffie_hellman_group_names,
|
||||||
bad_group, diffie_hellman_group_names, this->dh_group);
|
this->dh_group, diffie_hellman_group_names, group);
|
||||||
|
this->dh_group = group;
|
||||||
this->public.task.migrate(&this->public.task, this->ike_sa);
|
this->public.task.migrate(&this->public.task, this->ike_sa);
|
||||||
enumerator->destroy(enumerator);
|
enumerator->destroy(enumerator);
|
||||||
return NEED_MORE;
|
return NEED_MORE;
|
||||||
|
|||||||
Reference in New Issue
Block a user