Free the entire list of devices, not just its tail
diff --git a/tcpdump.c b/tcpdump.c
index cebc1f2..50b9c3a 100644
--- a/tcpdump.c
+++ b/tcpdump.c
@@ -716,7 +716,7 @@
 	char *ret = NULL;
 	char *end;
 #ifdef HAVE_PCAP_FINDALLDEVS
-	pcap_if_t *devpointer;
+	pcap_if_t *p, *devpointer;
 	int devnum;
 #endif
 	int status;
@@ -889,13 +889,13 @@
 				 * Look for the devnum-th entry in the
 				 * list of devices (1-based).
 				 */
-				for (i = 0;
-				    i < devnum-1 && devpointer != NULL;
-				    i++, devpointer = devpointer->next)
+				for (i = 0, p = devpointer;
+				    i < devnum-1 && p != NULL;
+				    i++, p = p->next)
 					;
-				if (devpointer == NULL)
+				if (p == NULL)
 					error("Invalid adapter index");
-				device = strdup(devpointer->name);
+				device = strdup(p->name);
 				pcap_freealldevs(devpointer);
 				break;
 			}