Commit Graph

524 Commits

Author SHA1 Message Date
Chris Maynard 4ac2441d7c Coalesce "-G fields2" and "-G fields3" into "-G fields", as discussed on -dev.
See: http://www.wireshark.org/lists/wireshark-dev/201304/msg00015.html

svn path=/trunk/; revision=48753
2013-04-05 21:58:43 +00:00
Evan Huus 37600a157b Rename value string (and similar) functions to use a consistent pattern. This
was done using textual search+replace, not anything syntax-aware, so presumably
it got most comments as well (except where there were typos).

Use a consistent coding style, and make proper use of the WS_DLL_* defines.

Group the functions appropriately in the header.

I ended up getting rid of most of the explanatory comments since many of them
duplicated what was in the value_string.c file (and were out of sync with the
recent updates I made to those in r48633). Presumably most of the comments
should be in the .h file not the .c file, but there's enough churn ahead that
it's not worth fixing yet.

Part of https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8467

svn path=/trunk/; revision=48634
2013-03-29 00:26:23 +00:00
Anders Broman bd61beffaa Add const casts and make local functions static.
svn path=/trunk/; revision=48521
2013-03-24 10:53:31 +00:00
Evan Huus bbb4058954 Remove slab.h and replace its last remaining usage with glib slices.
Take the opportunity to deduplicate some code that was common to both an
if block and its else block.

svn path=/trunk/; revision=48227
2013-03-10 14:52:14 +00:00
Evan Huus 122b7cb6df Remove the emem slab feature (sl_* functions) completely, replacing it with
glib memory slices.

- We weren't doing anything with the emem slab that couldn't be done with glib
  slices.
- Removes a fair bit of code as well as one debugging environment variable.
- Glib slices are much cache-friendlier and are multi-threading friendly (if
  we ever go there).
- Allows glib to actually return slices to the OS on occasion. The emem slab
  would hold onto its memory forever which resulted in a great deal of wasted
  memory after closing a large file.

svn path=/trunk/; revision=48218
2013-03-09 20:02:19 +00:00
Evan Huus 8569907b9f From Steve Magnani via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8339
This patch adds a new public API, proto_tree_add_bitmask_len(), identical to
proto_tree_add_bitmask() but using a caller-supplied length rather than an
inferred one. The underlying proto_item_add_bitmask_tree() code is modified
to display only fields for which all defined bits are available, and to
ignore bits that have no corresponding defined field ("forward compatibility"
cases).

From me: minor edits, see the bug for more details.

svn path=/trunk/; revision=48049
2013-03-04 14:18:18 +00:00
Anders Broman c5ee81098c From beroset:
remove C++ incompatibilities

https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8416

svn path=/trunk/; revision=48006
2013-03-02 12:10:56 +00:00
Guy Harris 6b629c4d92 Move show_exception() and show_reported_bounds_error() to
epan/show_exception.c, as it's used outside
epan/dissectors/packet-frame.c.  Update their callers to include
<epan/show_exception.h> to get their declaration.

Add a CATCH_NONFATAL_ERRORS macro that catches all exceptions that, if
there's more stuff in the packet to dissect after the dissector call
that threw the exception, doesn't mean you shouldn't go ahead and
dissect that stuff.  Use it in all those cases, including ones where
BoundsError was inappropriately being caught (you want those passed up
to the top level, so that the packet is reported as having been cut
short in the capture process).

Add a CATCH_BOUNDS_ERRORS macro that catches all exceptions that
correspond to running past the end of the data for a tvbuff; use it
rather than explicitly catching those exceptions individually, and
rather than just catching all exceptions (the only place that
DissectorError should be caught, for example, is at the top level, so
dissector bugs show up in the protocol tree).

Don't catch and then immediately rethrow exceptions without doing
anything else; just let the exceptions go up to the final catcher.

Use show_exception() to report non-fatal errors, rather than doing it
yourself.
 
If a dissector is called from Lua, catch all non-fatal errors and use
show_exception() to report them rather than catching only
ReportedBoundsError and adding a proto_malformed item.

Don't catch exceptions when constructing a trailer tvbuff in
packet-ieee8023.c - just construct it after the payload has been
dissected, and let whatever exceptions that throws be handled at the top
level.

Avoid some TRY/CATCH/ENDTRY cases by using checks such as
tvb_bytes_exist() before even looking in the tvbuff.

svn path=/trunk/; revision=47924
2013-02-27 22:43:54 +00:00
Bill Meier 3f70cb4406 Add an "Unregistered hf!" hint to DISSECTOR_ASSERT((guint)hfindex < gpa_hfinfo.len).
svn path=/trunk/; revision=47611
2013-02-10 18:38:46 +00:00
Bill Meier cfff564398 Add 'proto_registrar_get_id_byname()' accessor.
svn path=/trunk/; revision=47540
2013-02-07 22:04:02 +00:00
Pascal Quantin f78791d7d2 Revert changes committed by error in r47433
svn path=/trunk/; revision=47442
2013-02-02 09:02:11 +00:00
Pascal Quantin f26b250595 Fix https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8290 :
Allow up to 64 OPTIONAL / DEFAULT components per SEQUENCE

svn path=/trunk/; revision=47433
2013-02-01 22:44:14 +00:00
Evan Huus bff31de434 Add modelines
svn path=/trunk/; revision=47130
2013-01-17 03:37:41 +00:00
Evan Huus e49285b9e4 Null the finfo pointer after we free it. Reduces (but does not completely fix)
the errors from bug https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8197

svn path=/trunk/; revision=47114
2013-01-16 14:14:05 +00:00
Evan Huus e4f46ce55f Take a wild guess at what might be causing
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8197

It can't hurt, in any case.

svn path=/trunk/; revision=47084
2013-01-14 22:29:23 +00:00
Pascal Quantin ac972a58b2 From Nickolai via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8167 :
Fix an incorrect logical check for no_of_bits!=0 in proto_tree_add_split_bits_item_ret_val()

svn path=/trunk/; revision=46958
2013-01-05 23:49:24 +00:00
Gerald Combs c9d4240196 Add a context menu to the packet list and fill in the
apply/match-related actions. Have matchSelectedFilter figure out our
filter strings, which lets us remove duplicate code in the apply/match
action slots. Remove some leftover code from an experiment.

Adjust the temporary message colors in the status bar and label stack.

Add a NULL check to construct_match_selected_string.

svn path=/trunk/; revision=46449
2012-12-07 20:08:00 +00:00
Jeff Morriss da4442d638 Use g_error() to generate an explanatory message (and a core) when
ABORT_ON_DISSECTOR_BUG is set and we pass MAX_TREE_ITEMS.

If ABORT_ON_DISSECTOR_BUG is set and we get an unregistered hf, generate
an explanatory message (and a core).

svn path=/trunk/; revision=46323
2012-12-02 03:34:06 +00:00
Anders Broman 94fb28dfa1 Check if we have a filter name.
svn path=/trunk/; revision=46077
2012-11-18 18:12:50 +00:00
Jakub Zawadzki bdcdec560c Manually revert r45669
svn path=/trunk/; revision=45884
2012-11-03 20:51:19 +00:00
Jakub Zawadzki ff03289b1a Remove const specifier from argument.
svn path=/trunk/; revision=45872
2012-11-02 11:44:50 +00:00
Jeff Morriss d97b4ec325 Fix problem where NTP times with the high-bit set to 0 (which RFC 2030
chapter 3 has redefined to mean years *after* 2036) were being represented as
times prior to 1968.

This has been broken since r35840 (apparently not many people see NTP
timestamps beyond 2036 :-)): apparently I over-optimized packet-ntp's code
while copying it into proto.c: that temporary variable is necessary for the
unsigned math to happen correctly before assigning the result to the (signed)
time_t.

Leave a comment in the code indicating why the temporary variable is needed.
Copy that comment to packet-ntp.c.

Fix the same problem in ntp_to_nstime(): it also did not use the temporary variable.

svn path=/trunk/; revision=45790
2012-10-25 22:26:52 +00:00
Jakub Zawadzki 6dc977b7d2 - Allow reseting edt with new function epan_dissect_reset(),
- initialize edt once in few places, and later reset it after dissecting
  (add_packet_to_packet_list),
- revert r45667, probably no longer needed.

svn path=/trunk/; revision=45669
2012-10-20 16:44:55 +00:00
Jakub Zawadzki ef72e0eed3 - Free root node and tree data outside proto_tree_free_node,
- remove #if 0 code.

svn path=/trunk/; revision=45668
2012-10-20 16:38:55 +00:00
Jeff Morriss 3729335973 We always HAVE_CONFIG_H so don't bother checking whether we have it or not.
svn path=/trunk/; revision=45016
2012-09-20 01:48:30 +00:00
Martin Mathieson d729f21ad2 Revert r45005.
svn path=/trunk/; revision=45006
2012-09-19 16:56:59 +00:00
Martin Mathieson a232ae9242 Make proto_item_append_string() behave sanely, and use it in a few more
dissectors.

svn path=/trunk/; revision=45005
2012-09-19 11:58:32 +00:00
Jeff Morriss f90f3f3438 Don't fetch the value twice (unsigned integer case). Fix a cut-n-pasteo.
svn path=/trunk/; revision=44757
2012-09-03 19:33:45 +00:00
Jakub Zawadzki 1db996e051 MT: move global field_info_tmp to tree_data_t
svn path=/trunk/; revision=44747
2012-09-03 12:00:08 +00:00
Evan Huus 2af3ce88bd From Martin Kupec via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7658
Don't pass string-related encoding flags to get_uint_value() when handling
FT_UINT_STRING fields. This was causing all such fields with non-ASCII
encodings to use little-endian encoding, even when OR-ed with ENC_BIG_ENDIAN.

(not actually the topic of the above bug, but discovered during LLRP protocol
 testing, which was the topic of the above bug)

svn path=/trunk/; revision=44619
2012-08-23 02:48:26 +00:00
Gerald Combs a9f5507086 Keep field_info_tmp from being prematurely freed. Better fix for bug 7621.
svn path=/trunk/; revision=44478
2012-08-13 22:43:17 +00:00
Gerald Combs 517ef559c2 Fix a copy/paste error which triggered bug
svn path=/trunk/; revision=44456
2012-08-12 15:48:36 +00:00
Gerald Combs 72ddab2c98 Instead of calling DISSECTOR_ASSERT() whenever we get an invalid length,
add an expert item. For unusable lengths throw ReportedBoundsError but
try to continue on otherwise.

Based on a patch from Mike Morrin in bug 3884.

svn path=/trunk/; revision=44439
2012-08-10 23:05:04 +00:00
Gerald Combs cd3cca7edc Make the corresponding packet_info available to each tree item. This
lets us pass a NULL pinfo to expert_add_info_format() and
expert_add_undecoded_item(), which makes it possible to use those
routines deep in the bowels of many dissectors. As a proof of concept
remove the recent pinfo additions to packet-afp.c. This should also make
it easier to fix bug 3884.

svn path=/trunk/; revision=44435
2012-08-10 20:33:01 +00:00
Jeff Morriss d380312c16 Move the pi==NULL test into TRY_TO_FAKE_THIS_REPR.
Since the tree will only be NULL here if someone messed up in proto.c and
since pi will only be NULL if tree is NULL, assert out if either of them are
NULL (don't use DISSECTOR_ASSERT() since such a condition wouldn't be the
dissector writer's fault).

Use TRY_TO_FAKE_THIS_REPR in ptvcursor_add_text_with_subtree().

We've had TRY_TO_FAKE_THIS_REPR for a long time now, don't wrap it in #if 1.

new_field_info() doesn't return NULL so don't check for it returning NULL in
ptvcursor_add().

svn path=/trunk/; revision=44322
2012-08-08 03:02:27 +00:00
Guy Harris 835111692f From Richard Stearn: support for AX.25, including support for
LINKTYPE_AX25.

svn path=/trunk/; revision=44211
2012-08-02 16:54:43 +00:00
Jakub Zawadzki c852982ebc wrappers for label filling (with information about string truncation)
svn path=/trunk/; revision=44131
2012-07-30 10:52:20 +00:00
Jeff Morriss 3fa645481f Followup to r43176, r43177, r43178, and r43179: prohibit FT_*INT*
with BASE_NONE (or other future display values).

Don't use BASE_NONE with FT_UINT32s in the expert info fields.

svn path=/trunk/; revision=43412
2012-06-20 17:25:53 +00:00
Jakub Zawadzki 85aad38347 Add proto_tree_add_unicode_string() to add UTF-8 string to tree.
Convert some proto_tree_add_string_format_value(..., val, "%s", val); to use new function.

svn path=/trunk/; revision=43363
2012-06-19 14:32:24 +00:00
Bill Meier 08807fc48d Fix "BASE_CUSTOM field is incorrectly formatted when applied as a column".
Resolves Bug #6671 - https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=6671

svn path=/trunk/; revision=43186
2012-06-10 19:23:50 +00:00
Bill Meier 2968fcffa8 Fix bug wherein values in a custom column aren't displayed as a value_string (when appropriate).
Essentially: BASE_CUSTOM is "base_display_e value" (like BASE_DEC) *not* a bit-mask
 (like BASE_EXT_STRING).
Bug introduced in SVN #39902

svn path=/trunk/; revision=43184
2012-06-10 15:10:11 +00:00
Bill Meier d01cb597c9 Don't crash in 'proto_registrar_dump_values' if BASE_EXT_STRING and no extended string.
Note: this shows up when doing 'tshark -G values'.

BASE_EXT_STRING with a missing extended string does *not* cause issues
with the normal display code:

ToDo (eventually): Add some code to enforce requirement that hf[] entries with BASE_EXT_STRING
(or BASE_RANGE_STRING) set must also have a 'strings' value.



svn path=/trunk/; revision=43150
2012-06-07 21:10:02 +00:00
Chris Maynard 3e52049ff5 Fix Coverity CID's 702388 and 702422: OVERFLOW_BEFORE_WIDEN.
svn path=/trunk/; revision=42886
2012-05-28 18:37:10 +00:00
Jakub Zawadzki 5020a3f170 While iterating over string characters don't use strlen(), but check for NUL.
svn path=/trunk/; revision=42883
2012-05-28 15:59:00 +00:00
Bill Meier 12ba85a2a4 Rework proto_registrar_dump_protocols() to prevent a Clang scan-build "de-reference of a null poiunter" warning
(In practice, bug would not actually occur).

svn path=/trunk/; revision=42717
2012-05-19 16:07:50 +00:00
Jakub Zawadzki 91690d8a28 Fix string buffer overflow (bug #7029)
g_strlcpy() always return the size of strlen(src), so in case of truncation it could happen that offset_r > size or offset_e > size.
Fix it by adding new function protoo_strlcpy() which returns how many bytes was copied to dest buffer.


svn path=/trunk/; revision=42676
2012-05-17 10:18:53 +00:00
Guy Harris 7a87d7b6a3 Add ENC_UTF_16 and ENC_UCS_2. Note that UTF-16 and UCS-2 are not the
same, and that the routines to get "Unicode" strings are really doing
UCS-2 (and not doing anything about code values that aren't valid in
UCS-2 strings).

Have tvb_get_ephemeral_string_enc() separate cases for ASCII and UTF-8,
even though they're *currently* treated the same.

For FT_UINT_STRING, treat an encoding value of TRUE as meaning
"little-endian ASCII"; pass all other encodings through to
tvb_get_ephemeral_string_enc().

svn path=/trunk/; revision=42592
2012-05-11 23:55:54 +00:00
Guy Harris f1b11f62f8 proto_registrar_get_ftype() returns an FT_ value; make its return type
"enum ftenum" to reflect that, and fix the "switch doesn't handle XXX"
warnings that provokes.

svn path=/trunk/; revision=42579
2012-05-11 17:29:56 +00:00
Anders Broman 0cea399fda From Jakub Zawadzki: Use custom model in Filter Expression dialog.
svn path=/trunk/; revision=42411
2012-05-04 04:44:23 +00:00
Jakub Zawadzki e6f2751cdd Add support for checking conflicting entries in value_string_ext.
svn path=/trunk/; revision=42262
2012-04-26 15:33:46 +00:00