Convert a bunch of uses of "fd->cap_len" to use "pi.captured_len" (or to

use END_OF_FRAME), so that they don't look at stuff in an IP datagram
past the end of the IP datagram (i.e., frame padding).

svn path=/trunk/; revision=584
This commit is contained in:
Guy Harris 1999-08-26 07:34:43 +00:00
parent 8b2e03eea6
commit f93c76fd10
8 changed files with 28 additions and 28 deletions

View File

@ -2,7 +2,7 @@
* Routines for BOOTP/DHCP packet disassembly
* Gilbert Ramirez <gram@verdict.uthscsa.edu>
*
* $Id: packet-bootp.c,v 1.18 1999/07/29 05:46:52 gram Exp $
* $Id: packet-bootp.c,v 1.19 1999/08/26 07:34:43 guy Exp $
*
* The information used comes from:
* RFC 2132: DHCP Options and BOOTP Vendor Extensions
@ -517,7 +517,7 @@ dissect_bootp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree)
}
voff = offset+240;
eoff = fd->cap_len;
eoff = pi.captured_len;
while (voff < eoff) {
voff += bootp_option(pd, bp_tree, voff, eoff);

View File

@ -3,7 +3,7 @@
*
* Laurent Deniel <deniel@worldnet.fr>
*
* $Id: packet-giop.c,v 1.4 1999/07/29 05:46:54 gram Exp $
* $Id: packet-giop.c,v 1.5 1999/08/26 07:34:42 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -211,7 +211,7 @@ void dissect_giop(const u_char *pd, int offset, frame_data *fd, proto_tree *tree
#define END_OF_GIOP_MESSAGE (offset - first_offset - GIOP_HEADER_SIZE)
if (fd->cap_len < offset + GIOP_HEADER_SIZE) {
if (pi.captured_len < offset + GIOP_HEADER_SIZE) {
dissect_data(pd, offset, fd, tree);
return;
}
@ -304,7 +304,7 @@ void dissect_giop(const u_char *pd, int offset, frame_data *fd, proto_tree *tree
offset += GIOP_HEADER_SIZE;
if (fd->cap_len < offset + message_size) {
if (pi.captured_len < offset + message_size) {
dissect_data(pd, offset, fd, tree);
return;
}
@ -691,7 +691,7 @@ void dissect_giop(const u_char *pd, int offset, frame_data *fd, proto_tree *tree
offset = first_offset + GIOP_HEADER_SIZE + message_size;
if (offset < fd->cap_len) {
if (offset < pi.captured_len) {
dissect_data(pd, offset, fd, tree);
}

View File

@ -2,7 +2,7 @@
* Routines for the Generic Routing Encapsulation (GRE) protocol
* Brad Robel-Forrest <brad.robel-forrest@watchguard.com>
*
* $Id: packet-gre.c,v 1.4 1999/07/29 05:46:55 gram Exp $
* $Id: packet-gre.c,v 1.5 1999/08/26 07:34:42 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@unicom.net>
@ -77,7 +77,7 @@ dissect_gre(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) {
col_add_str(fd, COL_INFO, "Encapsulated unknown");
}
if (fd->cap_len > offset && tree) {
if (pi.captured_len > offset && tree) {
int is_ppp;
proto_item * ti;
proto_tree * gre_tree;

View File

@ -2,7 +2,7 @@
* Routines for the Internet Security Association and Key Management Protocol (ISAKMP)
* Brad Robel-Forrest <brad.robel-forrest@watchguard.com>
*
* $Id: packet-isakmp.c,v 1.7 1999/07/29 05:46:57 gram Exp $
* $Id: packet-isakmp.c,v 1.8 1999/08/26 07:34:41 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@unicom.net>
@ -289,7 +289,7 @@ void dissect_isakmp(const u_char *pd, int offset, frame_data *fd, proto_tree *tr
if (check_col(fd, COL_INFO))
col_add_fstr(fd, COL_INFO, "%s", exchtype2str(hdr->exch_type));
if (fd->cap_len > offset && tree) {
if (pi.captured_len > offset && tree) {
proto_item * ti;
proto_tree * isakmp_tree;

View File

@ -2,7 +2,7 @@
* Routines for OSPF packet disassembly
* (c) Copyright Hannes R. Boehm <hannes@boehm.org>
*
* $Id: packet-ospf.c,v 1.12 1999/07/29 05:47:01 gram Exp $
* $Id: packet-ospf.c,v 1.13 1999/08/26 07:34:41 guy Exp $
*
* At this time, this module is able to analyze OSPF
* packets as specified in RFC2328. MOSPF (RFC1584) and other
@ -162,7 +162,7 @@ dissect_ospf_hello(const u_char *pd, int offset, frame_data *fd, proto_tree *tre
memcpy(&ospfhello, &pd[offset], sizeof(e_ospf_hello));
if (tree) {
ti = proto_tree_add_text(tree, offset, (fd->cap_len - offset) , "OSPF Hello Packet");
ti = proto_tree_add_text(tree, offset, END_OF_FRAME, "OSPF Hello Packet");
ospf_hello_tree = proto_item_add_subtree(ti, ETT_OSPF_HELLO);
@ -200,8 +200,8 @@ dissect_ospf_hello(const u_char *pd, int offset, frame_data *fd, proto_tree *tre
offset+=20;
while(((int)(fd->cap_len - offset)) >= 4){
printf("%d", fd->cap_len - offset);
while(((int)(pi.captured_len - offset)) >= 4){
printf("%d", pi.captured_len - offset);
ospfneighbor=(guint32 *) &pd[offset];
proto_tree_add_text(ospf_hello_tree, offset, 4, "Active Neighbor: %s", ip_to_str((guint8 *) ospfneighbor));
offset+=4;
@ -223,7 +223,7 @@ dissect_ospf_db_desc(const u_char *pd, int offset, frame_data *fd, proto_tree *t
memcpy(&ospf_dbd, &pd[offset], sizeof(e_ospf_dbd));
if (tree) {
ti = proto_tree_add_text(tree, offset, (fd->cap_len - offset) , "OSPF DB Description");
ti = proto_tree_add_text(tree, offset, END_OF_FRAME, "OSPF DB Description");
ospf_db_desc_tree = proto_item_add_subtree(ti, ETT_OSPF_DESC);
proto_tree_add_text(ospf_db_desc_tree, offset, 2, "Interface MTU: %d", ntohs(ospf_dbd.interface_mtu) );
@ -274,7 +274,7 @@ dissect_ospf_db_desc(const u_char *pd, int offset, frame_data *fd, proto_tree *t
/* LS Headers will be processed here */
/* skip to the end of DB-Desc header */
offset+=8;
while( ((int) (fd->cap_len - offset)) >= OSPF_LSA_HEADER_LENGTH ) {
while( ((int) (pi.captured_len - offset)) >= OSPF_LSA_HEADER_LENGTH ) {
dissect_ospf_lsa(pd, offset, fd, tree, FALSE);
offset+=OSPF_LSA_HEADER_LENGTH;
}
@ -291,7 +291,7 @@ dissect_ospf_ls_req(const u_char *pd, int offset, frame_data *fd, proto_tree *tr
/* zero or more LS requests may be within a LS Request */
/* we place every request for a LSA in a single subtree */
if (tree) {
while( ((int) ( fd->cap_len - offset)) >= OSPF_LS_REQ_LENGTH ){
while( ((int) (pi.captured_len - offset)) >= OSPF_LS_REQ_LENGTH ){
memcpy(&ospf_lsr, &pd[offset], sizeof(e_ospf_ls_req));
ti = proto_tree_add_text(tree, offset, OSPF_LS_REQ_LENGTH, "Link State Request");
ospf_lsr_tree = proto_item_add_subtree(ti, ETT_OSPF_LSR);
@ -342,7 +342,7 @@ dissect_ospf_ls_upd(const u_char *pd, int offset, frame_data *fd, proto_tree *tr
memcpy(&upd_hdr, &pd[offset], sizeof(e_ospf_lsa_upd_hdr));
if (tree) {
ti = proto_tree_add_text(tree, offset, (fd->cap_len - offset) , "LS Update Packet");
ti = proto_tree_add_text(tree, offset, END_OF_FRAME, "LS Update Packet");
ospf_lsa_upd_tree = proto_item_add_subtree(ti, ETT_OSPF_LSA_UPD);
proto_tree_add_text(ospf_lsa_upd_tree, offset, 4, "Nr oF LSAs: %ld", (long)ntohl(upd_hdr.lsa_nr) );
@ -361,7 +361,7 @@ void
dissect_ospf_ls_ack(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) {
/* the body of a LS Ack packet simply contains zero or more LSA Headers */
while( ((int)(fd->cap_len - offset)) >= OSPF_LSA_HEADER_LENGTH ) {
while( ((int)(pi.captured_len - offset)) >= OSPF_LSA_HEADER_LENGTH ) {
dissect_ospf_lsa(pd, offset, fd, tree, FALSE);
offset+=OSPF_LSA_HEADER_LENGTH;
}
@ -523,7 +523,7 @@ dissect_ospf_lsa(const u_char *pd, int offset, frame_data *fd, proto_tree *tree,
ip_to_str((guint8 *) &(network_lsa.network_mask)));
offset += 4;
while( ((int) (fd->cap_len - offset)) >= 4){
while( ((int) (pi.captured_len - offset)) >= 4){
attached_router = (guint32 *) &pd[offset];
proto_tree_add_text(ospf_lsa_tree, offset, 4, "Attached Router: %s",
ip_to_str((guint8 *) attached_router));
@ -567,7 +567,7 @@ dissect_ospf_lsa(const u_char *pd, int offset, frame_data *fd, proto_tree *tree,
break;
default:
/* unknown LSA type */
proto_tree_add_text(ospf_lsa_tree, offset, (fd->cap_len - offset), "Unknown LSA Type");
proto_tree_add_text(ospf_lsa_tree, offset, END_OF_FRAME, "Unknown LSA Type");
}
}
/* return the length of this LSA */

View File

@ -2,7 +2,7 @@
* Routines for the Point-to-Point Tunnelling Protocol (PPTP)
* Brad Robel-Forrest <brad.robel-forrest@watchguard.com>
*
* $Id: packet-pptp.c,v 1.3 1999/07/13 02:52:53 gram Exp $
* $Id: packet-pptp.c,v 1.4 1999/08/26 07:34:40 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@unicom.net>
@ -390,7 +390,7 @@ dissect_pptp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) {
if (check_col(fd, COL_INFO))
col_add_fstr(fd, COL_INFO, "%s", cntrltype2str(cntrl_type));
if (fd->cap_len > offset && tree) {
if (pi.captured_len > offset && tree) {
guint16 msg_type;
proto_item * ti;
proto_tree * pptp_tree;

View File

@ -2,7 +2,7 @@
* Routines for RIPv1 and RIPv2 packet disassembly
* (c) Copyright Hannes R. Boehm <hannes@boehm.org>
*
* $Id: packet-rip.c,v 1.11 1999/08/04 00:33:11 guy Exp $
* $Id: packet-rip.c,v 1.12 1999/08/26 07:34:40 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -92,7 +92,7 @@ dissect_rip(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) {
col_add_str(fd, COL_INFO, packet_type[rip_header.command]);
if (tree) {
ti = proto_tree_add_item(tree, proto_rip, offset, (fd->cap_len - offset), NULL);
ti = proto_tree_add_item(tree, proto_rip, offset, END_OF_FRAME, NULL);
rip_tree = proto_item_add_subtree(ti, ETT_RIP);
proto_tree_add_text(rip_tree, offset, 1, "Command: %d (%s)", rip_header.command, packet_type[rip_header.command]);
@ -105,7 +105,7 @@ dissect_rip(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) {
/* zero or more entries */
while((fd->cap_len - offset) >= RIP_ENTRY_LENGTH){
while((pi.captured_len - offset) >= RIP_ENTRY_LENGTH){
memcpy(&rip_entry, &pd[offset], sizeof(rip_entry)); /* avoid alignment problem */
family = ntohs(rip_entry.vektor.family);
switch (family) {

View File

@ -2,7 +2,7 @@
* Routines for smb packet dissection
* Copyright 1999, Richard Sharpe <rsharpe@ns.aus.com>
*
* $Id: packet-smb.c,v 1.23 1999/08/24 17:26:14 gram Exp $
* $Id: packet-smb.c,v 1.24 1999/08/26 07:34:38 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@unicom.net>
@ -1444,7 +1444,7 @@ dissect_negprot_smb(const u_char *pd, int offset, frame_data *fd, proto_tree *tr
}
while (fd->cap_len > offset) {
while (pi.captured_len > offset) {
const char *str;
if (tree) {