Commit graph

294 commits

Author SHA1 Message Date
Stephen Fisher
46b8669566 Fix a bunch more warnings. Add -Werror when using --with-warnings-as-errors
under gcc to tools/lemon, plugins/mate and epan/


svn path=/trunk/; revision=21204
2007-03-26 06:10:52 +00:00
Jeff Morriss
62596bffb3 Fix bug 552:
http://bugs.wireshark.org/bugzilla/show_bug.cgi?id=552

by enforcing that header fields have names of length > 0.  This should fix
the display of those fields and also make them filterable (which was the
subject of the bug).  Abbreviations are (still) optional: if they are empty
then the field is not filterable.

Update README.developer with this information.

Add header field names in several dissectors where they were missing.

In packet-arp.c give "packet-storm-detected" a name (as above) but also set it
as _GENERATED.

Also remove trailing white space from all the files checked in.

svn path=/trunk/; revision=21018
2007-03-11 06:16:00 +00:00
Stephen Fisher
aa897723ff From Sebastien Tandel:
Here is an updated patch for proto_tree_add_item and the
range_string structure. The new macro RVALS() can be used as the macro
VALS() in the declaration of your hf_register_info with another
structure (range_string).  Be aware that you *have to* ORed the value of
the field display with BASE_RANGE_STRING constant and it can 'only' be
used with FT_(U)INT* types in a header_field_info.


svn path=/trunk/; revision=20805
2007-02-14 00:39:48 +00:00
Guy Harris
10778a6ab1 DISSECTOR_ASSERT_NOT_REACHED() now, by default, throws a Wireshark
exception rather than aborting the program; using it means that
dissector bugs show up as such rather than as malformed packets.

svn path=/trunk/; revision=20532
2007-01-23 18:31:26 +00:00
Martin Mathieson
997e5415f9 Add separate union entries to fvalue.value for signed and unsigned
32-bit numbers.  Separate signed and unsigned accessors have been
added and used where appropriate.

Definitely not for 0.99.5.

svn path=/trunk/; revision=20472
2007-01-18 11:02:26 +00:00
Ronnie Sahlberg
3e9ac49497 check if we have a finfo before dereferencing it later in PROTO_ITEM_IS_HIDDEN()
this prevents wireshark from crashing on X Liu's kerberos capture files


svn path=/trunk/; revision=20464
2007-01-17 21:05:44 +00:00
Tomas Kukosa
92d8d4e9b4 do not ignore invisible tree, it can break tree creation for coloring/filtering
svn path=/trunk/; revision=20404
2007-01-12 10:21:02 +00:00
Jaap Keuter
f8422ab7db Extending true_false_string support
- Separate tfs.[ch]
- Add larger sample collection
- Properly export DATA

svn path=/trunk/; revision=20373
2007-01-10 07:47:00 +00:00
Guy Harris
44c0624bd9 Add a WIRESHARK_RUN_FROM_BUILD_DIRECTORY environment variable on UN*X;
if set, and if the program isn't running with additional privileges,
it'll treat the directory in which the program is found as the data
directory.

If, on Windows, the version-number subdirectory of {data
directory}\plugins doesn't exist (which is assumed to mean that the
program is being run from the build directory), or if, on UN*X,
WIRESHARK_RUN_FROM_BUILD_DIRECTORY is set, the plugin directory is the
"plugins" subdirectory of the data directory, and all subdirectories of
that directory are scanned for plugins, as the "plugins" subdirectory of
the build directory contains subdirectories for the plugins; this means
that if we're running from the build directory, we'll find the plugins
we built in the build tree.

When generating the wireshark-filter man page, run tshark with
WIRESHARK_RUN_FROM_BUILD_DIRECTORY set, so it uses the plugins from the
build to generate the list of filters.

svn path=/trunk/; revision=20261
2007-01-02 06:49:40 +00:00
Ronnie Sahlberg
b7817c4e37 proto_tree_set_string() no longer needs an already_allocated parameter since it is now always FALSE.
This should mean that all fvalue_set() for FT_STRING[Z] are always with already_copied==FALSE

(funny that we never saw someone trying to g_free("[ Null ]") which might have happened before)



svn path=/trunk/; revision=20245
2006-12-30 00:41:41 +00:00
Ronnie Sahlberg
62040d3638 make the FT_STRINGZ case in proto_tree_new_item() use ep allocated memory
svn path=/trunk/; revision=20244
2006-12-30 00:36:29 +00:00
Ronnie Sahlberg
ee4ceb8947 make proto_tree_set_string_tvb use ep allocated memory and thus push the memory allocation/free for this field down into ftype-string.c
svn path=/trunk/; revision=20243
2006-12-30 00:27:33 +00:00
Ronnie Sahlberg
459d5f66a4 use ep allocated memory for the string in proto_item_append_string and let ftype-string.c handle the allocation/freeing of storage by setting already_copied to FALSE
svn path=/trunk/; revision=20240
2006-12-29 23:05:55 +00:00
Ronnie Sahlberg
8fc740a53e hmm
best to revert this for a while.



revert all changes from previous patch.



svn path=/trunk/; revision=20195
2006-12-22 09:01:12 +00:00
Ronnie Sahlberg
8433f6d589 change some slab allocated memory into ep/emem allocated structures instead.
this primarily removes code and simplifies (==eliminates) the need to track the data that is allocated and should potentially be slightly faster than a slab allocator.
however these functions are called A LOT so there might be a performance hit when using emem with full debugging canary values and all the bells and whistles activated.


this change also makes any future attempt to parallellize dissection of frames easier if we just make the ep allocator allocate from a threads specific ep pool.
(something we would have to do anyway to make ep allocations multithreaded)



this works in all my tests so far but needs more test coverage.



svn path=/trunk/; revision=20194
2006-12-22 08:35:43 +00:00
Ronnie Sahlberg
41c258daf3 create a nice helper to dissect bitmasks and implement some test useage of it in the scsi dissector
svn path=/trunk/; revision=20002
2006-11-27 14:50:23 +00:00
Guy Harris
d3fed959bc Have separate proto_construct_match_selected_string() and
proto_can_match_selected() routines, to more clearly separate the two
functions - but have them both call the same underlying routine, so
they both make the same decisions as to whether a match-selected string
can be constructed or not.

svn path=/trunk/; revision=19976
2006-11-24 18:25:23 +00:00
Guy Harris
37a6c02697 Rename proto_construct_dfilter_string() to
proto_construct_match_selected_string() to indicate what it does - and
have it return a Boolean indication of whether the string could be
built, returning the string through a pointer, and, if that pointer is
null, have it just return the Boolean and not construct the string.

Get rid of proto_can_match_selected() -
proto_construct_match_selected_string() can be used for that, which
means we have only one piece of code that knows whether a "match
selected" string can be constructed or not.

Have proto_construct_match_selected_string() support matching
zero-length FT_NONE (and FT_PCRE, but that shouldn't happen) fields even
if there's no epan_dissect_t, as such a match just checks whether the
field is present.

svn path=/trunk/; revision=19967
2006-11-23 21:16:46 +00:00
Guy Harris
621c7fe650 When checking whether a field supports "match selected", do the same
checks that we do when we try to construct the filter expression for
"match selected" - this means we don't just assert that all FT_NONEs are
filterable, as they aren't.

svn path=/trunk/; revision=19961
2006-11-23 00:15:49 +00:00
Guy Harris
8532eef3c6 Make the "standard" case in proto_can_match_selected() and
proto_construct_dfilter_string() the default, so you add explicit cases
only when the type needs to be treated specially, so we don't end up
with types where we forget to have a case.

svn path=/trunk/; revision=19959
2006-11-22 22:11:38 +00:00
Martin Mathieson
268a3dff57 Make FT_STRINGZ items work as apply/prepare as filter menu items
svn path=/trunk/; revision=19936
2006-11-20 14:53:22 +00:00
Gerald Combs
fe557f6296 Throw an exception if we try to add more than a million items to the tree.
svn path=/trunk/; revision=19767
2006-11-01 20:32:23 +00:00
Gilbert Ramirez
63ec12f392 When processing '-G fields', ignore the "proto_tree_add_text"
pseudo-field by looking at the ID for hf_text_only. Apparently
some fields really don't have 'name' fields, but we still want
their info to be dumped out.

svn path=/trunk/; revision=19763
2006-10-31 22:00:41 +00:00
Gerald Combs
9e23f31e5f Add support for reading from stdin under Windows. Based on a patch sent
in last year by Gianluca Varenni.

Add partial support for reading from named pipes (currently disabled).

Move utf_8to16() and utf_16to8() to a separate module (unicode-utils.[ch])
so that we don't have to cut and paste code in dumpcap.c.

Fix up whitespace.

svn path=/trunk/; revision=19291
2006-09-22 21:14:54 +00:00
Tomas Kukosa
539102ca60 - new function ssl_dissector_delete()
- register H.225.0 over TLS (configurable port 1300)
- register SIP over TLS (fixed port 5061)
- new function proto_tree_get_root()

svn path=/trunk/; revision=19059
2006-08-28 07:05:02 +00:00
Martin Mathieson
f8aadddf70 Make apply-as-filter strings work for FT_UINT_STRING (rather than using frame[...])
svn path=/trunk/; revision=18969
2006-08-21 11:45:37 +00:00
Martin Mathieson
0669def03d Fix for bug 1023 (problem with 'apply as filter' strings)
svn path=/trunk/; revision=18817
2006-08-02 09:14:31 +00:00
Ronnie Sahlberg
64fba459da from martin m
Hi,

This patch allows FT_NONE items to be built into filter expressions
(i.e. testing for their presence or absence rather than comparing with a
value) using the Apply|Prepare a Filter menus.  What drove me to add
this was having to type in !tcp.analysis.out_of_order.

Does this seem reasonable?

Regards,
Martin




svn path=/trunk/; revision=18782
2006-07-22 03:24:28 +00:00
Gerald Combs
20093fdaa4 snprintf -> g_snprintf. Fix up whitespace.
svn path=/trunk/; revision=18776
2006-07-20 21:29:45 +00:00
Guy Harris
f6f7bd756d The joys of the C switch statement - you have to remember to use
"break;" between cases except in those rare situations where you *want*
fallthrough.

svn path=/trunk/; revision=18550
2006-06-22 21:55:24 +00:00
Anders Broman
996d4db495 Ethereal->Wireshark
svn path=/trunk/; revision=18234
2006-05-28 19:49:07 +00:00
Ronnie Sahlberg
89f022b12b name change
svn path=/trunk/; revision=18197
2006-05-21 05:12:17 +00:00
Guy Harris
3b34a4f260 Squelch a compiler warning (for a problem that doesn't actually occur).
svn path=/trunk/; revision=17758
2006-03-29 21:53:26 +00:00
Luis Ontanon
850dfe8fa2 add proto_all_finfos() that will return a GPtrArray containing every finfo found in a tree.
svn path=/trunk/; revision=17741
2006-03-27 19:28:02 +00:00
Tomas Kukosa
923855bb20 new FT_GUID handling - big/little endian supported
svn path=/trunk/; revision=17566
2006-03-10 11:58:22 +00:00
Lars Roland
e271ba9a3c Display g_error messages in the console window unconditionally, if preferences aren't loaded yet.
This way we ensure that errors are displayed during protocol registration.

Use g_error instead of g_warning, if not allowed characters are used in display filter names for protocols. Extend the error message in this case.

svn path=/trunk/; revision=17248
2006-02-11 03:50:25 +00:00
Guy Harris
55c64cec5e Add "proto_tree_add_XXX_format_value()" routines, which are like the
"proto_tree_add_XXX_format()" routines except that the format doesn't
have to include the field name - the field name, followed by ": ", are
put into the representation string, followed by the result of the
formatting, so you just format the value with the format string, not the
entire representation.

svn path=/trunk/; revision=17221
2006-02-09 04:18:23 +00:00
Jörg Mayer
b446d51eb1 Didier Gautheron:
proto.c uses the wrong pointer in error msg.

Me:
        Be more verbose in case of illegal characters when
        registering filter names.

svn path=/trunk/; revision=16986
2006-01-10 16:19:56 +00:00
Jörg Mayer
9a490f4b73 Jaap Keuter:
While looking into bug 239 I found a type mismatch in proto.c. Even
though tree_is_expanded is defined as a (gboolean *) the memory
allocation is carried out using sizeof (gint *). The attached patch
fixes this.


svn path=/trunk/; revision=16877
2005-12-22 01:36:42 +00:00
Tomas Kukosa
a5bfb48c2f OBJECT IDENTIFIER name resolution moved to oid_resolv.c
svn path=/trunk/; revision=16699
2005-12-06 11:45:55 +00:00
Guy Harris
46325167d9 Check for a null blurb pointer for a field, as is done in some other
locations, and initialize the blurb field to NULL for protocols, now
that we support the blurb being a null pointer.

svn path=/trunk/; revision=16672
2005-12-04 04:22:43 +00:00
Tomas Kukosa
dcae7d303f new field type FT_OID for OBJECT IDENTIFIERs
svn path=/trunk/; revision=16652
2005-12-02 13:16:58 +00:00
Guy Harris
cdd6ccea1d Don't pass signed characters to the <ctype.h> macros.
svn path=/trunk/; revision=16457
2005-11-10 07:42:23 +00:00
Ulf Lamping
820aaac6b0 MSVC warning fixed:
proto.c(4694) : warning C4101: 'stringified' : unreferenced local variable

svn path=/trunk/; revision=16381
2005-11-02 20:50:54 +00:00
Guy Harris
cbce856e9e When printing the code for a display filter:
print register numbers as unsigned (they're guint32);

	when printing a PUT_FVALUE instruction, show the value as well
	as the type of the value.

That requires that a bunch of types get to_repr methods; add them for
PCRE (FTREPR_DFILTER-only - show the regular expression as text),
tvbuffs (FTREPR_DFILTER_only - show the data as a hex string), integral
types, string types other than FT_STRING, and FT_IPv6.

That means we can use fvalue_to_string_repr() for FT_IPXNET and FT_IPv6
in proto_construct_dfilter_string(), and that we don't need to handle
integer and floating types specially in MATE.

Fix some problems with the PCRE execution code for tvbuff types.

svn path=/trunk/; revision=16369
2005-10-31 02:42:22 +00:00
Guy Harris
c72ffd259d Move the ptvcursor.c code to epan/proto, and make ptvcursor_add() handle
FT_UINT_BYTES and FT_UINT_STRING correctly when the tree argument is
null (which involves carving proto_tree_add_item() into bits and having
both ptvcursor_add() and proto_tree_add_item() call those bits).

svn path=/trunk/; revision=16287
2005-10-22 05:43:09 +00:00
Guy Harris
ef966c3377 If we don't want to dump core when a field is registered twice, at least
make the message give enough information to give us some hope of finding
the offending field.

svn path=/trunk/; revision=16179
2005-10-10 18:06:50 +00:00
Guy Harris
f6ef22c553 Have show_exception() take a "const char *" as its exception message,
and not free the string to which it points.  Pass to
REPORT_DISSECTOR_BUG() strings allocated with ep_strdup_printf(), so
that they're freed automatically.

svn path=/trunk/; revision=16039
2005-09-28 16:16:37 +00:00
Olivier Biot
3452023b80 The TRY_TO_FAKE_THIS_ITEM() speed optimization has a side effect in that it
will only process FT_PROTOCOL fields. As a result, proto_item_append_string()
calls may throw a dissector exception, as only a FT_STRING or FT_STRINGZ can be
appended to with this call.

In order to prevent these dissector assertions, silently return from the append
call if the field is a FT_PROTOCOL.

Note that when the tree is visible, the updates of the fields occur normally,
as expected.

svn path=/trunk/; revision=16035
2005-09-28 07:08:57 +00:00
Anders Broman
cb932a2514 From Peter Johansson
I added a description for the call to DISSECTOR_ASSERT in proto.c to be 
printed to stderr.

svn path=/trunk/; revision=15802
2005-09-14 19:14:23 +00:00
Guy Harris
25c4bc9379 Replace tvb_memcpy() calls that extract IPv4 addresses into a guint32,
and that extract IPv6 addresses into a "struct e_in6_addr", with
tvb_get_ipv4() and tvb_get_ipv6() calls - except for some that we
remove, by using proto_tree_add_item(), rather than replacing.

Have epan/tvbuff.h include epan/ipv6-utils.h, to define "struct
e_in6_addr" (not necessary to declare the tvbuff routines, but including
it there means "struct e_in6_addr" is guaranteed to be defined before
those declarations, so we don't get compiler complaints if we define it
*after* those declarations).

svn path=/trunk/; revision=15758
2005-09-11 21:25:37 +00:00
Ulf Lamping
642467ad5c I'm adding the "Expert Info" prototype now, as it seems to be in a state where others might have a look and probably already find it useful :-). Anyway, we can easily disable it at one or two places in the code if it get's in our way of a new release.
Please see: http://wiki.ethereal.com/Development/ExpertInfo for a complete overview of the intended feature and it's current state of implementation.

While I'm working on this, I've also added some more status result codes to the DCE/RPC and DCOM dissectors.

svn path=/trunk/; revision=15754
2005-09-11 16:55:34 +00:00
Guy Harris
266e1a3491 Add "tvb_get_ipv4()" and "tvb_get_ipv6()" addresses, to fetch IPv4 and
IPv6 addresses.  Use "tvb_get_ipv4()" in the WINS Replication dissector,
so that it gets the right answer on little-endian *AND* big-endian
machines.

svn path=/trunk/; revision=15753
2005-09-10 19:43:41 +00:00
Tomas Kukosa
c53bf17cda new BASE_DEC_HEX and BASE_HEX_DEC displaying numbers in "dual" format
svn path=/trunk/; revision=15682
2005-09-05 10:56:41 +00:00
Ronnie Sahlberg
5521c10492 hmmm i though i removed some sprintf in the previous commit apparently not.
remove all sprintf and replace with g_snprintf()


svn path=/trunk/; revision=15652
2005-09-01 09:29:21 +00:00
Ronnie Sahlberg
55add7077f convert one sprintf into g_snprintf()
at the same time, make proto_construct_dfilter_string() return an emem allocated string.
This fixes a tiny memleak in print.c that never freed the string returned by this function.


svn path=/trunk/; revision=15651
2005-09-01 09:03:29 +00:00
Ulf Lamping
994496a184 several times replacing:
sprintf -> g_snprintf
snprintf -> g_snprintf
vsnprintf -> g_vsnprintf
strdup -> g_strdup

svn path=/trunk/; revision=15412
2005-08-18 19:31:15 +00:00
Ulf Lamping
495eb1b788 snprintf -> g_snprintf
svn path=/trunk/; revision=15398
2005-08-17 23:10:28 +00:00
Gerald Combs
2f2a3fedd3 In packet-sflow.c, don't pass a NULL value pointer to
proto_tree_add_ipv6().  Add tree items for the extended router source
and dest mask, and fix offsets.  These changes appear to be correct,
but I don't have a valid capture with extended router data.

In proto.c, throw a dissector error if we try to pass a NULL value to
various proto_tree_set_*() routines.

Fixes bug 356.


svn path=/trunk/; revision=15375
2005-08-16 16:04:30 +00:00
Ulf Lamping
0dc9fb3d4a various code cleanup:
-use g_snprintf instead of sprintf and snprintf
-use g_strdup_printf where appropriate
-remove #include "snprintf.h" (as only g_snprintf should be used)
-replace some more alloc/realloc/calloc/free with their glib pendants

svn path=/trunk/; revision=15264
2005-08-08 18:50:39 +00:00
Jörg Mayer
74a75d72fe char -> const char warning fixes
svn path=/trunk/; revision=15223
2005-08-05 13:23:47 +00:00
Guy Harris
554f620001 Constify to remove a bunch of warnings. Add some casts to squelch
(presumably-)harmless-but-otherwise-unremovable const-to-nonconst
warnings.

In the TACACS dissector, clean up the variables used in option parsing
to avoid some const-to-nonconst warnings.

Clean up some white space.

svn path=/trunk/; revision=15043
2005-07-24 19:01:28 +00:00
Jörg Mayer
30a8557868 More 'char*' -> 'const char*' changes to fix warnings.
svn path=/trunk/; revision=15015
2005-07-23 11:41:25 +00:00
Jörg Mayer
ca322883d6 Change proto_register_protocol to use 'const char*' instead of 'char*'
svn path=/trunk/; revision=14966
2005-07-20 11:01:35 +00:00
Tomas Kukosa
bab34b522b new field type FT_GUID
svn path=/trunk/; revision=14845
2005-07-04 13:04:53 +00:00
Ulf Lamping
d5ae7ee8af proto.c(2941) : warning C4090: 'function' : different 'const' qualifiers
proto.c(2941) : warning C4022: 'g_tree_insert' : pointer mismatch for actual parameter 2

svn path=/trunk/; revision=14782
2005-06-26 11:29:04 +00:00
Guy Harris
b67f63560e More constification.
svn path=/trunk/; revision=14740
2005-06-24 02:51:01 +00:00
Gerald Combs
dce31be366 When we add an FT_STRINGZ item, throw an exception if the length is
less than -1.  If the length is 0, set the item string to "[Empty]".
This fixes bug 219.


svn path=/trunk/; revision=14634
2005-06-15 15:10:02 +00:00
Ulf Lamping
9784fa242a add new function proto_tree_move_item(), which will move an already existing proto_item inside the tree (but it can't be moved to a different "tree level")
svn path=/trunk/; revision=14524
2005-06-02 18:35:20 +00:00
Ulf Lamping
4984c5e949 show Ethernet and IPX addresses the same way as we do with other fields as well (e.g. IP addresses), first the converted value (e.g. IP address or manufaturer name) and then in brackets the "raw data"
svn path=/trunk/; revision=14523
2005-06-02 18:29:29 +00:00
Ulf Lamping
7c07e00f1d fix #11: add a [truncated] to the label, if the message to display is too long
svn path=/trunk/; revision=14477
2005-05-29 11:23:42 +00:00
Gilbert Ramirez
c2454f0260 Add a "-G fields3" report which prints the bitmask of the field, and avoids
printing the blurb twice, like fields2 does.
Add a script, fsanity.py, to check sanity of FT definitions. Right now the
only check is for bitmasks for integer-like fields.

svn path=/trunk/; revision=14454
2005-05-27 15:13:09 +00:00
Ronnie Sahlberg
864245ef6e cket wsp is creating string items and later appending to them and their value at runtime which breaks when the TRY_TO_FAKE_THIS_ITEM() is used.
Add a comment to proto_item_append_string() explaining the "danger" and what needs to be done if one decides to use proto_item_append_string()

Add a small change to WSP so that it will disable this speed optimization so not to trigger a DISSECTOR_BUG in proto_item_append_string()




svn path=/trunk/; revision=14452
2005-05-27 06:00:08 +00:00
Gerald Combs
4a5deae575 In some places we call proto_tree_add_item() with hfindex and length
values that may not be valid (e.g. dissect_ber_octet_string()
in packet-ber.c).  If the length is invalid, get_uint_value() or
get_int_value() will abort.  Change them to throw an exception instead.
This keeps us from having to do a lot of extra work in the dissector.

Fixes bug 182.


svn path=/trunk/; revision=14437
2005-05-26 14:53:39 +00:00
Gerald Combs
985f94ec24 In proto_tree_set_string(), don't set a null fvalue or Ethereal will throw
a hissy fit.  Fixes bug 157.

svn path=/trunk/; revision=14299
2005-05-03 19:33:02 +00:00
Gerald Combs
a80ebce3f2 Some dissectors apparently call proto_tree_add_*() with a null tvb.
This makes tvb_ensure_bytes_exist() throw a fit, so just throw an
exception instead.

svn path=/trunk/; revision=14212
2005-04-28 04:03:30 +00:00
Gerald Combs
7323cb267c Back out the previous change, and use tvb_ensure_bytes_exist() instead of
throwing an exception ourselves.

svn path=/trunk/; revision=14209
2005-04-28 03:30:07 +00:00
Gerald Combs
5ec0554c24 In alloc_field_info, throw a ReportedBoundsError if we're passed an
invalid length.

svn path=/trunk/; revision=14203
2005-04-27 16:22:24 +00:00
Ronnie Sahlberg
c27c30ba02 Bugfix for proto_item_get_subtree()
Not all proto_item* fields have a subtree associated to it.
If it doesnt have a subtree  fi  will be NULL,
test fi for NULL before trying to dereference it to avoid a coredump.



svn path=/trunk/; revision=14134
2005-04-19 11:59:40 +00:00
Ronnie Sahlberg
2bc81b2a48 Major speed improvement for filtering and dissection.
It should not dump core as far as all my tests are concerned and Menu_Statistics/ProtocolHierStats work

It needs more testing and there might still be cases where it will crash that will need to be fixed  but I feel it will be worth it since it will decrease the time to filter very large capture files dramatically.

Real significant performance boost for very large captures.


(If we cant fix all the problems we can just revert this patch)



svn path=/trunk/; revision=14051
2005-04-11 08:43:51 +00:00
Ronnie Sahlberg
df98534657 From Didier:
optimization for COLUMNS to make ethereal faster when filtering

optimization to make the slow find_protocol_by_id() fast.
(idea from Didier, implementation modified by me to be less intrusive)



svn path=/trunk/; revision=14026
2005-04-07 12:00:03 +00:00
Gerald Combs
8b95cd38d5 Don't generate a "dissector bug" warning in cases where a dissector calls
proto_tree_add_*(tree, tvb, offset, 0, ...);

and "offset" is greater than the length remaining in the tvbuff.

svn path=/trunk/; revision=14014
2005-04-04 18:10:42 +00:00
Gerald Combs
b2c4af01c2 Remove a g_assert() left over from debugging.
svn path=/trunk/; revision=13971
2005-03-29 19:52:04 +00:00
Gerald Combs
4198c72a69 Fix a compiler warning.
svn path=/trunk/; revision=13969
2005-03-29 16:02:02 +00:00
Gerald Combs
9ead15a6eb README.developer says:
"PROTOABBREV     A name for the protocol for use in filter expressions;
                 it should contain only lower-case letters, digits, and
                 hyphens."

In proto_register_protocol(), generate a warning if PROTOABBREV contains
invalid characters.  Along with the list above, allow underscores and
periods.  Fix up whitespace.

Lower-case PROTOABBREV in several dissectors.

svn path=/trunk/; revision=13967
2005-03-29 14:56:09 +00:00
Ulf Lamping
c475807aab bugfix: don't call tvb_length_remaining() if tvb is NULL
but what to do instead?

svn path=/trunk/; revision=13958
2005-03-28 18:08:31 +00:00
Guy Harris
48217e0bee For protocol tree items of type FT_NONE and FT_PROTOCOL, treat negative
length values (other than -1) as very large positive values, and for
values larger than the amount of data remaining in the tvbuff, clip the
value to the length of the tvbuff, so that dissectors don't have to
worry about doing that clipping themselves.

svn path=/trunk/; revision=13913
2005-03-26 03:27:22 +00:00
Ulf Lamping
79daa1e80e use DISSECTOR_ASSERT instead of g_assert
svn path=/trunk/; revision=13871
2005-03-23 00:09:12 +00:00
Ulf Lamping
f6dbe26f6c add another REPORT_DISSECTOR_BUG() call, if tfi->tree_type is existing and not in valid range.
Question remains: Is it safe to continue in that case?

svn path=/trunk/; revision=13180
2005-01-26 23:17:00 +00:00
Guy Harris
5e4584e186 Add the source file name and line number to the dissector bug report
(not as useful as for bugs caught in the dissector itself, but still may
be useful).

svn path=/trunk/; revision=13082
2005-01-17 01:11:39 +00:00
Guy Harris
df98de72ed Use REPORT_DISSECTOR_BUG() for the "bogus length" error in
"alloc_field_info()", so the error report can include the field with the
problem.  (The file and line number isn't interesting - the bug isn't in
"alloc_field_info()", it's in the dissector that called the routine
calling "alloc_field_info()" - but the field name/abbrevition is
interesting, as it'd help developers identify the place in the dissector
where we're passing in a bogus length.)

svn path=/trunk/; revision=13081
2005-01-17 00:56:56 +00:00
Guy Harris
2bdef3c122 Rename the FieldError exception to DissectorError.
Add a DISSECTOR_ASSERT() macro, which is the usual type of assertion
macro, but throws a DissectorError exception with a message giving the
flien and line number and the failed test as a string.  Use that macro
in "alloc_field_info()".

Report that exception in the Info column and the protocol tree, as well
as logging the exception failure with g_warning().

svn path=/trunk/; revision=13078
2005-01-16 23:30:55 +00:00
Ulf Lamping
1c9781b4ec throw the new FieldError exception, if a dissector tries to add a field with invalid parameters
add a message parameter to the show_exception function

svn path=/trunk/; revision=13074
2005-01-16 16:06:15 +00:00
Ulf Lamping
86bd4b30c5 performance improvement:
In the past: to prevent duplicate protocol names (and alike), each time a new protocol was registered, the list of protocols were iterated and the name compared with each existing name using strcasecmp, which is slow as we have >500 protocols right now.

Now: the protocol name to check against duplicates is first converted into a hashvalue and then only this value is checked and stored in a hashtable. This way the string to check for, has to be converted/compared only a single time!

svn path=/trunk/; revision=13007
2005-01-12 21:31:22 +00:00
Guy Harris
cbddfd0793 From Luis Ontanon: if new ett values are registered after the
tree_is_expanded array is initially allocated, grow the array

svn path=/trunk/; revision=12997
2005-01-08 23:43:29 +00:00
Guy Harris
4c45795dab Constify a pointer, so that the array of pointers to ett_ values can be
const, although the pointers can't point to consts (as the values get
filled in as they're registered).

svn path=/trunk/; revision=12981
2005-01-07 12:56:21 +00:00
Guy Harris
c1e2dc025b Cast away the constness of the argument to "g_tree_lookup()" - another
GLib function with an unfortunate signature.

svn path=/trunk/; revision=12923
2005-01-02 03:58:08 +00:00
Guy Harris
55465228b2 "proto_registrar_get_byname()" doesn't modify its argument, so make it
"const char *".

svn path=/trunk/; revision=12888
2004-12-31 02:02:19 +00:00
Guy Harris
948d61bae1 Check to make sure we don't give a protocol tree item a negative length.
Clean up indentation.

If we dissect an octet string and then re-dissect it as a particular
type of data, don't use the end offset from the re-dissection as the
offset of the end of the octet string - just use the result of
"dissect_per_octet_string()".

svn path=/trunk/; revision=12406
2004-10-27 10:02:45 +00:00
Guy Harris
cc6754d659 Fix a typo.
svn path=/trunk/; revision=12062
2004-09-21 23:15:59 +00:00