From 2465fafb4eac67461d6a72e502023d83b6ec736b Mon Sep 17 00:00:00 2001 From: hidnplayr Date: Tue, 19 Nov 2013 21:01:57 +0000 Subject: [PATCH] Bugfix in IPv4_input (for fragmented IPv4 packets) git-svn-id: svn://kolibrios.org@4259 a494cfbc-eb01-0410-851d-a64ba20cac60 --- kernel/trunk/network/IPv4.inc | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/kernel/trunk/network/IPv4.inc b/kernel/trunk/network/IPv4.inc index d4460d6659..e58071dc8a 100644 --- a/kernel/trunk/network/IPv4.inc +++ b/kernel/trunk/network/IPv4.inc @@ -484,8 +484,8 @@ IPv4_input: ; TODO: add IPv4 rep movsb ; push eax - push [edx + IPv4_FRAGMENT_entry.Owner] ; we need to remeber the owner, in case this is the last packet - push [edx + IPv4_FRAGMENT_entry.NextPtr] ; Set edx to the next pointer + push [edx + IPv4_FRAGMENT_entry.Owner] ; we need to remeber the owner, in case this is the last packet + push [edx + IPv4_FRAGMENT_entry.NextPtr] ; Set edx to the next pointer push edx ; Push pointer to fragment onto stack DEBUGF DEBUG_NETWORK_VERBOSE, "IPv4_input: Next Fragment: 0x%x\n", edx call NET_packet_free ; free the previous fragment buffer (this uses the value from stack) @@ -497,14 +497,10 @@ IPv4_input: ; TODO: add IPv4 xchg cl, ch mov edx, eax mov [edx + IPv4_header.TotalLength], cx - add esp, 8 + add esp, 12 xchg cl, ch - push ecx - - DEBUGF DEBUG_NETWORK_VERBOSE, "IPv4_input: Packet is now de-fragmented\n" - - push eax - jmp .handle_it ; edx = buf ptr, ecx = size, [esp] buf ptr, [esp+4], total size, ebx=device ptr + push ecx edx ; size and pointer + jmp .handle_it ; edx = buf ptr, ecx = size, [esp] buf ptr, [esp+4], total size, ebx=device ptr .destroy_slot_pop: add esp, 4