From: Tobias Brunner Date: Thu, 15 Aug 2013 13:15:34 +0000 (+0200) Subject: ikev1: Fix calculation of the number of fragments X-Git-Tag: 5.1.1dr1~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f853e7bcc03be4cde89a7f61fb9c243748d558d7;p=thirdparty%2Fstrongswan.git ikev1: Fix calculation of the number of fragments The old code resulted in too few fragments in some cases. --- diff --git a/src/libcharon/sa/ikev1/task_manager_v1.c b/src/libcharon/sa/ikev1/task_manager_v1.c index bcfbe3e3a1..dfceb54468 100644 --- a/src/libcharon/sa/ikev1/task_manager_v1.c +++ b/src/libcharon/sa/ikev1/task_manager_v1.c @@ -448,7 +448,7 @@ static bool send_packet(private_task_manager_t *this, bool request, { /* reduce size due to non-ESP marker */ frag_size -= 4; } - count = (data.len / (frag_size + 1)) + 1; + count = data.len / frag_size + (data.len % frag_size ? 1 : 0); DBG1(DBG_IKE, "sending IKE message with length of %zu bytes in " "%hhu fragments", data.len, count);