forked from osmocom/wireshark
Change FT_NSTRING_UINT8 to FT_UINT_STRING. The length parameter passed
to proto_tree_add_item() will indicate if the length of the string is indicated by an UINT8, UINT16, UINT24, or UINT32. Change NCP dissector-maker to produce FT_UINT_STRING. Fix off-by-one in dissection of some NCP reply packets. svn path=/trunk/; revision=2334
This commit is contained in:
parent
064936053c
commit
7c0421b146
|
@ -3,7 +3,7 @@
|
|||
/* dfilter-scanner.l
|
||||
* Scanner for display filters
|
||||
*
|
||||
* $Id: dfilter-scanner.l,v 1.31 2000/08/01 18:10:05 gram Exp $
|
||||
* $Id: dfilter-scanner.l,v 1.32 2000/08/22 06:38:16 gram Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@zing.org>
|
||||
|
@ -231,6 +231,7 @@ le|\<\= { dfilter_lval.operand = TOK_LE; return TOK_LE; }
|
|||
retval = 0;
|
||||
break;
|
||||
case FT_STRING:
|
||||
case FT_UINT_STRING:
|
||||
retval = T_FT_STRING;
|
||||
break;
|
||||
case FT_ETHER:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* help_dlg.c
|
||||
*
|
||||
* $Id: help_dlg.c,v 1.5 2000/08/17 08:17:38 guy Exp $
|
||||
* $Id: help_dlg.c,v 1.6 2000/08/22 06:38:32 gram Exp $
|
||||
*
|
||||
* Laurent Deniel <deniel@worldnet.fr>
|
||||
*
|
||||
|
@ -406,8 +406,8 @@ static void set_help_text(GtkWidget *w, help_type_t type)
|
|||
case FT_RELATIVE_TIME:
|
||||
type_name = "FT_RELATIVE_TIME";
|
||||
break;
|
||||
case FT_NSTRING_UINT8:
|
||||
type_name = "FT_NSTRING_UINT8";
|
||||
case FT_UINT_STRING:
|
||||
type_name = "FT_UINT_STRING";
|
||||
break;
|
||||
case FT_STRING:
|
||||
type_name = "FT_STRING";
|
||||
|
|
17
ncp2222.h
17
ncp2222.h
|
@ -2,7 +2,7 @@
|
|||
* Routines for NetWare Core Protocol
|
||||
* Gilbert Ramirez <gram@xiexie.org>
|
||||
*
|
||||
* $Id: ncp2222.h,v 1.1 2000/07/28 20:03:41 gram Exp $
|
||||
* $Id: ncp2222.h,v 1.2 2000/08/22 06:38:16 gram Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@zing.org>
|
||||
|
@ -221,11 +221,11 @@ dissect_ncp_reply(tvbuff_t *tvb, packet_info *pinfo,
|
|||
* or ncp.subfunc will find both the requests and the replies.
|
||||
*/
|
||||
if (ncp_rec) {
|
||||
proto_tree_add_uint_hidden(ncp_tree, hf_ncp_func, tvb,
|
||||
6, 1, ncp_rec->func);
|
||||
proto_tree_add_uint(ncp_tree, hf_ncp_func, tvb,
|
||||
6, 0, ncp_rec->func);
|
||||
if (ncp_requires_subfunc(ncp_rec->func)) {
|
||||
proto_tree_add_uint_hidden(ncp_tree, hf_ncp_subfunc,
|
||||
tvb, 6, 1, ncp_rec->subfunc);
|
||||
proto_tree_add_uint(ncp_tree, hf_ncp_subfunc,
|
||||
tvb, 6, 0, ncp_rec->subfunc);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -248,12 +248,7 @@ dissect_ncp_reply(tvbuff_t *tvb, packet_info *pinfo,
|
|||
return;
|
||||
}
|
||||
|
||||
if (ncp_requires_subfunc(ncp_rec->func)) {
|
||||
ptvc = ptvcursor_new(ncp_tree, tvb, 9);
|
||||
}
|
||||
else {
|
||||
ptvc = ptvcursor_new(ncp_tree, tvb, 8);
|
||||
}
|
||||
ptvc = ptvcursor_new(ncp_tree, tvb, 8);
|
||||
process_ptvc_record(ptvc, ncp_rec->reply_ptvc);
|
||||
ptvcursor_free(ptvc);
|
||||
}
|
||||
|
|
26
ncp2222.py
26
ncp2222.py
|
@ -9,7 +9,7 @@ part of the 0x2222 "family")
|
|||
Data comes from "Programmer's Guide to the NetWare Core Protocol"
|
||||
by Steve Conner and Dianne Conner.
|
||||
|
||||
$Id: ncp2222.py,v 1.3 2000/08/09 21:24:27 deniel Exp $
|
||||
$Id: ncp2222.py,v 1.4 2000/08/22 06:38:17 gram Exp $
|
||||
|
||||
Copyright (c) 2000 by Gilbert Ramirez <gram@xiexie.org>
|
||||
|
||||
|
@ -156,10 +156,14 @@ class PTVCRecord:
|
|||
# Small sanity check
|
||||
field_length = self.field.Length()
|
||||
|
||||
if type(field_length) == type(0) and field_length > 0:
|
||||
if field_length != self.length:
|
||||
sys.stderr.write("Length %d does not match field length %d for field %s\n" % (self.length, field_length, self.field.Abbreviation()))
|
||||
sys.exit(1)
|
||||
# if type(field_length) != type(self.length):
|
||||
# sys.stderr.write("Length types do not match")
|
||||
# sys.exit(1)
|
||||
|
||||
# if type(field_length) == type(0) and field_length > 0:
|
||||
# if field_length != self.length:
|
||||
# sys.stderr.write("Length %d does not match field length %d for field %s\n" % (self.length, field_length, self.field.Abbreviation()))
|
||||
# sys.exit(1)
|
||||
|
||||
# Check if an endianness override is given
|
||||
try:
|
||||
|
@ -190,8 +194,16 @@ class PTVCRecord:
|
|||
if self.endianness == LE:
|
||||
endianness = 'TRUE'
|
||||
|
||||
length = -1
|
||||
|
||||
if type(self.length) == type(0):
|
||||
length = self.length
|
||||
else:
|
||||
var_length = self.field.Length()
|
||||
if var_length > 0:
|
||||
length = var_length
|
||||
|
||||
if length > -1:
|
||||
return "{ &%s, %d, %s }" % (self.field.HFName(),
|
||||
length, endianness)
|
||||
else:
|
||||
|
@ -480,9 +492,9 @@ class nstring8(Type):
|
|||
the first byte."""
|
||||
|
||||
type = "nstring8"
|
||||
ftype = "FT_NSTRING_UINT8"
|
||||
ftype = "FT_UINT_STRING"
|
||||
def __init__(self, abbrev, descr):
|
||||
Type.__init__(self, abbrev, descr, -1)
|
||||
Type.__init__(self, abbrev, descr, 1)
|
||||
|
||||
class stringz(Type):
|
||||
"NUL-terminated string."
|
||||
|
|
18
proto.c
18
proto.c
|
@ -1,7 +1,7 @@
|
|||
/* proto.c
|
||||
* Routines for protocol tree
|
||||
*
|
||||
* $Id: proto.c,v 1.77 2000/08/13 14:03:37 deniel Exp $
|
||||
* $Id: proto.c,v 1.78 2000/08/22 06:38:18 gram Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@zing.org>
|
||||
|
@ -232,7 +232,7 @@ proto_tree_free_node(GNode *node, gpointer data)
|
|||
g_mem_chunk_free(gmc_item_labels, fi->representation);
|
||||
if (fi->hfinfo->type == FT_STRING)
|
||||
g_free(fi->value.string);
|
||||
else if (fi->hfinfo->type == FT_NSTRING_UINT8)
|
||||
else if (fi->hfinfo->type == FT_UINT_STRING)
|
||||
g_free(fi->value.string);
|
||||
else if (fi->hfinfo->type == FT_BYTES)
|
||||
g_free(fi->value.bytes);
|
||||
|
@ -403,6 +403,7 @@ proto_tree_add_item(proto_tree *tree, int hfindex, tvbuff_t *tvb,
|
|||
proto_item *pi;
|
||||
guint32 value, n;
|
||||
|
||||
/* XXX - need to free this after an exception */
|
||||
new_fi = alloc_field_info(hfindex, tvb, start, length);
|
||||
|
||||
if (new_fi == NULL)
|
||||
|
@ -467,10 +468,11 @@ proto_tree_add_item(proto_tree *tree, int hfindex, tvbuff_t *tvb,
|
|||
proto_tree_set_string_tvb(new_fi, tvb, start, length);
|
||||
break;
|
||||
|
||||
case FT_NSTRING_UINT8:
|
||||
n = tvb_get_guint8(tvb, start);
|
||||
case FT_UINT_STRING:
|
||||
/* This g_strdup'ed memory is freed in proto_tree_free_node() */
|
||||
n = get_uint_value(tvb, start, length, little_endian);
|
||||
proto_tree_set_string_tvb(new_fi, tvb, start + 1, n);
|
||||
|
||||
/* Instead of calling proto_item_set_len(), since we don't yet
|
||||
* have a proto_item, we set the field_info's length ourselves. */
|
||||
new_fi->length = n + 1;
|
||||
|
@ -1667,7 +1669,7 @@ proto_item_fill_label(field_info *fi, gchar *label_str)
|
|||
break;
|
||||
|
||||
case FT_STRING:
|
||||
case FT_NSTRING_UINT8:
|
||||
case FT_UINT_STRING:
|
||||
snprintf(label_str, ITEM_LABEL_LENGTH,
|
||||
"%s: %s", fi->hfinfo->name, fi->value.string);
|
||||
break;
|
||||
|
@ -2116,7 +2118,7 @@ proto_registrar_get_length(int n)
|
|||
case FT_BYTES:
|
||||
case FT_BOOLEAN:
|
||||
case FT_STRING:
|
||||
case FT_NSTRING_UINT8:
|
||||
case FT_UINT_STRING:
|
||||
case FT_DOUBLE:
|
||||
case FT_ABSOLUTE_TIME:
|
||||
case FT_RELATIVE_TIME:
|
||||
|
@ -2388,8 +2390,8 @@ proto_registrar_dump(void)
|
|||
case FT_RELATIVE_TIME:
|
||||
enum_name = "FT_RELATIVE_TIME";
|
||||
break;
|
||||
case FT_NSTRING_UINT8:
|
||||
enum_name = "FT_NSTRING_UINT8";
|
||||
case FT_UINT_STRING:
|
||||
enum_name = "FT_UINT_STRING";
|
||||
break;
|
||||
case FT_STRING:
|
||||
enum_name = "FT_STRING";
|
||||
|
|
4
proto.h
4
proto.h
|
@ -1,7 +1,7 @@
|
|||
/* proto.h
|
||||
* Definitions for protocol display
|
||||
*
|
||||
* $Id: proto.h,v 1.40 2000/08/13 14:03:38 deniel Exp $
|
||||
* $Id: proto.h,v 1.41 2000/08/22 06:38:20 gram Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@zing.org>
|
||||
|
@ -89,7 +89,7 @@ enum ftenum {
|
|||
FT_ABSOLUTE_TIME,
|
||||
FT_RELATIVE_TIME,
|
||||
FT_STRING,
|
||||
FT_NSTRING_UINT8, /* String prefixed by 1 byte indicating length */
|
||||
FT_UINT_STRING,
|
||||
FT_ETHER,
|
||||
FT_BYTES,
|
||||
FT_IPv4,
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
* Proto Tree TVBuff cursor
|
||||
* Gilbert Ramirez <gram@xiexie.org>
|
||||
*
|
||||
* $Id: ptvcursor.c,v 1.2 2000/08/11 13:34:32 deniel Exp $
|
||||
* $Id: ptvcursor.c,v 1.3 2000/08/22 06:38:21 gram Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@zing.org>
|
||||
|
@ -59,12 +59,7 @@ ptvcursor_add(ptvcursor_t *ptvc, int hf, gint length, gboolean endianness)
|
|||
item = proto_tree_add_item(ptvc->tree, hf, ptvc->tvb, ptvc->offset,
|
||||
length, endianness);
|
||||
|
||||
if (length == PTVC_VARIABLE_LENGTH) {
|
||||
ptvc->offset += proto_item_get_len(item);
|
||||
}
|
||||
else {
|
||||
ptvc->offset += length;
|
||||
}
|
||||
ptvc->offset += proto_item_get_len(item);
|
||||
return item;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue