From d1644d7e4fdc62dd671d792278f744d476a110df Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sat, 10 Jan 2015 10:46:32 +0100 Subject: [PATCH] Fix another misuse of BOpenHashTable::Iterator * This ioctl is used only in the arp command, but still we should keep it working * Similar to the problem in elf.cpp, this relied on entry being set to NULL when trying to iterate after the last element. --- src/add-ons/kernel/network/datalink_protocols/arp/arp.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/add-ons/kernel/network/datalink_protocols/arp/arp.cpp b/src/add-ons/kernel/network/datalink_protocols/arp/arp.cpp index fac074f5be..fe58de1f39 100644 --- a/src/add-ons/kernel/network/datalink_protocols/arp/arp.cpp +++ b/src/add-ons/kernel/network/datalink_protocols/arp/arp.cpp @@ -885,14 +885,12 @@ arp_control(const char *subsystem, uint32 function, void *buffer, arp_entry *entry = NULL; uint32 i = 0; - while (iterator.HasNext() && i < control.cookie) { + for (uint32 i = 0; i <= control.cookie; i++) { + if (!iterator.HasNext()) + return B_ENTRY_NOT_FOUND; entry = iterator.Next(); - i++; } - if (entry == NULL) - return B_ENTRY_NOT_FOUND; - control.cookie++; control.address = entry->protocol_address; if (entry->hardware_address.sdl_alen == ETHER_ADDRESS_LENGTH) {