The maximum for IKEv1 is already 255 due to the 8-bit fragment number.
With an overhead of 17 bytes (x64) per fragment and a default maximum
of 10000 bytes per packet the maximum memory required is 14 kB
for a fragmented message.
fragment_data_t *frag;
};
+/**
+ * Maximum number of fragments we will handle
+ */
+#define MAX_FRAGMENTS 255
+
/**
* A single fragment within a fragmented message
*/
}
encrypted_fragment = (encrypted_fragment_payload_t*)payload;
total = encrypted_fragment->get_total_fragments(encrypted_fragment);
-
+ if (total > MAX_FRAGMENTS)
+ {
+ DBG1(DBG_IKE, "maximum fragment count exceeded");
+ reset_defrag(this);
+ return FAILED;
+ }
if (!this->fragments || total > this->frag->last)
{
reset_defrag(this);