Jean-Louis ha scritto:
Jean-Louis ha scritto:
today I have found some bug on pcap-usb-linux.c

now i can try to tell you which are


in "text mode" ther'is direction check, I don't know how I can use this "filter", but the check is broken

If this "filter" is usable, should be added similar code to "bin e mmap mode"
Index: pcap-usb-linux.c
===================================================================
RCS file: /home/jean-louis/cvsroot/libpcap/pcap-usb-linux.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -c -r1.3 -r1.4
*** pcap-usb-linux.c	29 Oct 2008 15:03:27 -0000	1.3
--- pcap-usb-linux.c	29 Oct 2008 16:03:01 -0000	1.4
***************
*** 302,308 ****
  	struct pcap_pkthdr pkth;
  	pcap_usb_header* uhdr = (pcap_usb_header*)handle->buffer;
  	u_char urb_transfer=0;
- 	int incoming=0;
  
  	/* ignore interrupt system call errors */
  	do {
--- 302,307 ----
***************
*** 364,383 ****
  		urb_transfer = URB_BULK;
  	if (pipeid2 == 'i') {
  		ep_num |= URB_TRANSFER_IN;
- 		incoming = 1;
  	}
- 	if (etype == 'C')
- 		incoming = !incoming;
  
  	/* direction check*/
! 	if (incoming)
! 	{
! 		if (handle->direction == PCAP_D_OUT)
  			return 0;
  	}
! 	else
! 		if (handle->direction == PCAP_D_IN)
! 			return 0;
  	uhdr->event_type = etype;
  	uhdr->transfer_type = urb_transfer;
  	uhdr->endpoint_number = ep_num;
--- 363,377 ----
  		urb_transfer = URB_BULK;
  	if (pipeid2 == 'i') {
  		ep_num |= URB_TRANSFER_IN;
  	}
  
  	/* direction check*/
! 	if (handle->direction != PCAP_D_INOUT) {
! 		if (((handle->direction == PCAP_D_OUT) && (ep_num & URB_TRANSFER_IN)) ||
! 		    ((handle->direction == PCAP_D_IN) && !(ep_num & URB_TRANSFER_IN)))
  			return 0;
  	}
! 
  	uhdr->event_type = etype;
  	uhdr->transfer_type = urb_transfer;
  	uhdr->endpoint_number = ep_num;
-
This is the tcpdump-workers list.
Visit https://cod.sandelman.ca/ to unsubscribe.

Reply via email to