Commit Graph

324 Commits

Author SHA1 Message Date
Evan Huus 0844929247 Follow-up to r49055 as noted on
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7359

The BER integer dissection routines take an hf_id, but that can be -1.
Only fetch the type (to check signedness) if hf_id >= 0, as otherwise this
causes a dissector bug. Default to signed if given no hf_id - I don't know
whether this should be unsigned or not, but the old behaviour was that
everything was signed so it's not a regression at least.

svn path=/trunk/; revision=49101
2013-04-30 23:19:47 +00:00
Evan Huus 5b8a3df249 From me: only sign-extend BER integers if the field is actually signed
From Guy: override two fields in the GOOSE ASN.1 dissector to be unsigned

Together these fix
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8250


svn path=/trunk/; revision=49055
2013-04-26 19:23:36 +00:00
Evan Huus cb387ad2de Initialize branch_taken right at the top of dissect_ber_choice so that the
caller can depend on it being initialized even in peculiar error conditions.

Fixes the other half of https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8599

svn path=/trunk/; revision=48944
2013-04-20 21:20:00 +00:00
Guy Harris a2414d8909 Don't wire into the reassembly code the notion that reassemblies should
be done on flows from one address to another; reassembly for protocols
running atop TCP should be done on flows from one TCP endpoint to
another.

We do this by:

	adding "reassembly table" as a data structure;

	associating hash tables for both in-progress reassemblies and
	completed reassemblies with that data structure (currently, not
	all reassemblies use the latter; they might keep completed
	reassemblies in the first table);

	having functions to create and destroy keys in that table;

	offering standard routines for doing address-based and
	address-and-port-based flow processing, so that dissectors not
	needing their own specialized flow processing can just use them.

This fixes some mis-reassemblies of NIS YPSERV YPALL responses (where
the second YPALL response is processed as if it were a continuation of
a previous response between different endpoints, even though said
response is already reassembled), and also allows the DCE RPC-specific
stuff to be moved out of epan/reassembly.c into the DCE RPC dissector.

svn path=/trunk/; revision=48491
2013-03-22 23:59:54 +00:00
Anders Broman 81e80f2c0b From beroset:
remove C++ incompatibilities 
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8416

svn path=/trunk/; revision=48355
2013-03-17 16:48:47 +00:00
Anders Broman 54eb4a6cec [-Wmissing-prototypes]
Use explicit casts.

svn path=/trunk/; revision=48319
2013-03-15 16:39:30 +00:00
Bill Meier 96a24cc79f Fix spelling/typos found using a list of commonly misspelled words.
The misspellings were mostly in comments but some were
in text strings visible to the user.


svn path=/trunk/; revision=47899
2013-02-26 04:42:26 +00:00
Bill Meier 1823aa007c it's ==> its & its ==> it's as needed.
svn path=/trunk/; revision=47891
2013-02-26 01:06:19 +00:00
Guy Harris e2b61c828f Constify some character pointer variables to avoid warnings about
strings being assigned to them.

svn path=/trunk/; revision=46653
2012-12-21 05:34:38 +00:00
Bill Meier f498c3a172 Reformat for readability:
indentation, whitespace, long-lines, etc.
Also;
- replace two usages of fprintf(stderr,...) by g_warning();
- revert incorrect replacement of FALSE by ENC_BIG_ENDIAN
  done a while back (2 cases);
  [The incorrect use of ENC_BIG_ENDIAN was benign since
   ENC_BIG_ENDIAN is currently defined ad 0x0000000]

svn path=/trunk/; revision=45625
2012-10-18 02:33:11 +00:00
Jeff Morriss 2552c750e5 We always HAVE_CONFIG_H so don't bother checking whether we have it or not.
svn path=/trunk/; revision=45017
2012-09-20 02:03:38 +00:00
Jeff Morriss aa5d9d78dd From Robert Bullen via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7683 :
The reassembled fragments tree in the Packet Details view is awesome, but it
lacks one thing: a field that exposes the reassembled data.

tcp.data already exists for exposing a single TCP segment's payload as a byte
array. It would be handy to have something similar for a single application
layer PDU when TCP segment reassembly is involved. I propose
tcp.reassembled.data, named and placed after the already existing field
tcp.reassembled.length.

My primary use case for this feature is outputting tcp.reassembled.data with
tshark for further processing with a script.

The attached patch implements this very feature. Because the reassembled
fragment tree code is general purpose, i.e. not specific to just TCP, any
dissector that relies upon it can add a similar field very cheaply. In that
vein I've also implemented ip.reassembled.data and ipv6.reassembled.data, which
expose reassembled fragment data as a single byte stream for IPv4 and IPv6,
respectively. All other protocols that use the reassembly code have been left
alone, other than inserting NULL into their initializer lists for the newly
introduced struct field reassemble.h:fragment_items.hf_reassembled_data.

svn path=/trunk/; revision=44802
2012-09-07 02:09:59 +00:00
Michael Mann 5dd7371960 more ephemeral memory cleanup
svn path=/trunk/; revision=44496
2012-08-14 17:58:41 +00:00
Bill Meier 638d74d43f Use val_to_str_const() where appropriate;
Also (for a few files):
- create/use some extended value strings;
- remove unneeded #include files;
- remove unneeded variable initialization;
- re-order fcns slightly so prefs_reg_handoff...() at end, etc

svn path=/trunk/; revision=44438
2012-08-10 22:55:02 +00:00
Guy Harris 659cf0527a UATs could be put into "categories". The categories were defined only
implicitly by the #define name and string they were defined to; not all
UATs neatly fit into any of the categories, so some of them were put
into categories that weren't obviously correct for them, and one - the
display filter macro UAT - wasn't put into any category at all (which
caused crashes when editing them, as the GUI code that handled UAT
changes from a dialog assumed the category field was non-null).

The category was, in practice, used only to decide, in the
aforementioned GUI code, whether the packet summary pane needed to be
updated or not.  It also offered no option of "don't update the packet
summary pane *and* don't redissect anything", which is what would be
appropriate for the display filter macro UAT.

Replace the category with a set of fields indicating what the UAT
affects; we currently offer "dissection", which applies to most UATs
(any UAT in libwireshark presumably affects dissection at a minimum) and
"the set of named fields that exist".  Changing any UAT that affects
dissection requires a redissection; changing any UAT that affects the
set of named fields that exist requires a redissection *and* rebuilding
the packet summary pane.

Perhaps we also need "filtering", so that if you change a display filter
macro, we re-filter, in case the display is currently filtered with a
display filter that uses a macro that changed.

svn path=/trunk/; revision=43603
2012-07-08 01:00:46 +00:00
Jakub Zawadzki bf81b42e1e Update Free Software Foundation address.
(COPYING will be updated in next commit)

svn path=/trunk/; revision=43536
2012-06-28 22:56:06 +00:00
Anders Broman cec562ddd2 From Alex Lindberg: Add preference to packet-ber.c to toggle BER warning on leading zero bits. https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7328
svn path=/trunk/; revision=43098
2012-06-05 05:16:06 +00:00
pascal 8f557d0874 Attempt to fix clang warnings (dead assignment, dereference of null pointer, branch condition evaluates to a garbage value)
svn path=/trunk/; revision=42392
2012-05-02 21:55:59 +00:00
Bill Meier 159901cd15 Use consistent indentation;
Use #if 0/#endif to comment out some code (rather than /* ... */

svn path=/trunk/; revision=42212
2012-04-23 17:43:56 +00:00
Jakub Zawadzki 8a1dc57c03 Remove doubled semicolons and semicolons outside function.
svn path=/trunk/; revision=42053
2012-04-13 20:22:31 +00:00
Jeff Morriss 5adc2792e4 Fix CID 620: since we're checking if the given hf index is positive (since
r15662), move the proto_tree_add_boolean() call (which uses the hf index)
inside the check.

svn path=/trunk/; revision=41910
2012-04-03 17:37:27 +00:00
Anders Broman cd6d0b075f Use hfi->abbrev insted.
svn path=/trunk/; revision=40376
2012-01-04 19:06:34 +00:00
Anders Broman 906d2aecbb Enhance error information.
svn path=/trunk/; revision=40361
2012-01-03 22:06:42 +00:00
Anders Broman 4a00a8ac58 Squelsh warnings.
svn path=/trunk/; revision=40025
2011-11-28 16:42:43 +00:00
Jaap Keuter f14c2c772b Move some comments around to make it more boilerplate like.
svn path=/trunk/; revision=39992
2011-11-22 21:51:24 +00:00
Anders Broman b431591727 Get rod of " warning: identifier ‘class’ conflicts with C++ keyword"
svn path=/trunk/; revision=39945
2011-11-19 09:08:50 +00:00
Stig Bjørlykke 89880b5b59 Increase the size of a unknown INTEGER to FT_INT64 to be able to show
negative integers and integers up to MAXINT64.  We still don't support
integers between MAXINT64 and MAXUINT64, which would be 9 bytes long.

svn path=/trunk/; revision=39673
2011-10-30 15:55:18 +00:00
Bill Meier 293049dfba Do some conversions of proto_tree_add_item() 'encoding' arg.
(previously missed).

    57   FT_BOOLEAN:       FALSE-->ENC_BIG_ENDIAN
    31   FT_BOOLEAN:       TRUE-->ENC_LITTLE_ENDIAN

    10   FT_BYTES:         ENC_BIG_ENDIAN-->ENC_NA
     1   FT_BYTES:         ENC_LITTLE_ENDIAN-->ENC_NA
    21   FT_BYTES:         FALSE-->ENC_NA
     2   FT_BYTES:         TRUE-->ENC_NA

     2   FT_IPXNET:        ENC_BIG_ENDIAN-->ENC_NA

     6   FT_IPv6:          ENC_BIG_ENDIAN-->ENC_NA
     1   FT_IPv6:          FALSE-->ENC_NA

     6   FT_NONE:          ENC_BIG_ENDIAN-->ENC_NA
    19   FT_NONE:          FALSE-->ENC_NA
     3   FT_NONE:          TRUE-->ENC_NA

     1   FT_STRING:        ENC_BIG_ENDIAN-->ENC_ASCII|ENC_NA
     1   FT_STRING:        ENC_LITTLE_ENDIAN-->ENC_ASCII|ENC_NA
     5   FT_STRING:        FALSE-->ENC_ASCII|ENC_NA
     1   FT_STRING:        TRUE-->ENC_ASCII|ENC_NA

     4   FT_STRINGZ:       ENC_NA-->ENC_ASCII|ENC_NA
     8   FT_STRINGZ:       FALSE-->ENC_ASCII|ENC_NA

     1   FT_INT32:         FALSE-->ENC_BIG_ENDIAN
     1   FT_INT32:         TRUE-->ENC_LITTLE_ENDIAN

    11   FT_UINT8:         0-->ENC_BIG_ENDIAN
   111   FT_UINT8:         FALSE-->ENC_BIG_ENDIAN
    17   FT_UINT8:         TRUE-->ENC_LITTLE_ENDIAN
     1   FT_UINT16:        0-->ENC_BIG_ENDIAN
    68   FT_UINT16:        FALSE-->ENC_BIG_ENDIAN
    18   FT_UINT16:        TRUE-->ENC_LITTLE_ENDIAN
     4   FT_UINT24:        FALSE-->ENC_BIG_ENDIAN
    70   FT_UINT32:        FALSE-->ENC_BIG_ENDIAN
     1   FT_UINT32:        TRUE-->ENC_LITTLE_ENDIAN
     4   FT_UINT64:        FALSE-->ENC_BIG_ENDIAN
     1   FT_UINT64:        TRUE-->ENC_LITTLE_ENDIAN

     1   FT_UINT_STRING:   FALSE-->ENC_ASCII|ENC_BIG_ENDIAN


svn path=/trunk/; revision=39442
2011-10-16 23:38:49 +00:00
Anders Broman 4b952c1324 Get rid of check_col, while at it set ENC.
svn path=/trunk/; revision=39146
2011-09-26 08:25:18 +00:00
Stig Bjørlykke 7f4e941ab6 Add an expert info warning for integers encoded with too many octets.
svn path=/trunk/; revision=38771
2011-08-29 10:01:36 +00:00
Graeme Lunt a8d3a3ea8c Allow the dissection of BER/DER carried over a TCP transport using
"Decode As..."


svn path=/trunk/; revision=38560
2011-08-16 12:28:17 +00:00
Bill Meier a2b58f051d Add #include <stdlib.h> to files which reference fcns declared in stdlib.h;
(In many cases I previously incorrectly removed the #include <stdlib.h>).

svn path=/trunk/; revision=37334
2011-05-20 19:00:09 +00:00
Anders Broman f62ac53352 From Yaniv Kaul:
Fix 'set but not used' errors that GCC 4.6 emits.

svn path=/trunk/; revision=36892
2011-04-27 05:24:31 +00:00
Stig Bjørlykke 1fd17eb0d9 Fixed blurb for BER Error.
svn path=/trunk/; revision=36495
2011-04-06 09:59:21 +00:00
Stig Bjørlykke 3a1673c04c Made "BER Error" filterable.
svn path=/trunk/; revision=36494
2011-04-06 08:52:42 +00:00
Ronnie Sahlberg 13f6b77d92 remove two pointless const in casts
coverity 580 and 581

svn path=/trunk/; revision=36407
2011-03-30 04:36:09 +00:00
Tomas Kukosa 0b9c645150 Fix warning
svn path=/trunk/; revision=36139
2011-03-04 14:36:27 +00:00
Tomas Kukosa 3f8b9e87a9 Check only first 14 digits of GeneralizedTime which are fixed, next parts are optional
svn path=/trunk/; revision=36138
2011-03-04 14:01:57 +00:00
Gerald Combs dae5200002 Fix some Visual C++ analysis warnings.
svn path=/trunk/; revision=35988
2011-02-17 23:00:34 +00:00
Stig Bjørlykke 0ac8e7cc8d Put error messages and expert info for illegal UTCTime elements as a
subtree on the UTCTime element.

svn path=/trunk/; revision=35945
2011-02-14 10:18:03 +00:00
Stig Bjørlykke 84bc28bd6a Introduce "Fragment count" filter element for all protocols doing reassembly.
svn path=/trunk/; revision=35705
2011-01-30 21:01:07 +00:00
Jeff Morriss e80012653f Fix https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=5537 :
Don't go modifying the bitstring if its length is 0 (meaning that there is only
the NULL terminator).

svn path=/trunk/; revision=35342
2011-01-03 17:37:41 +00:00
Guy Harris d049046268 Note that this is ultimately not necessarily the right fix.
svn path=/trunk/; revision=35331
2011-01-02 21:49:00 +00:00
Guy Harris 8d7d050e9e For those cases where we interpret the contents of an OCTET STRING,
which could be of arbitrary length - even if it's not supposed to be! -
as a value of some other type, by adding them as a registered field,
first check to make sure the length of the field is appropriate for the
type and, if not, show a dissection error, rather than showing a
dissector-bug assertion when we call proto_tree_add_item().

This fixes a bunch of dissector-bug assertions that show up with
malformed BER-encoded packets.

Also, fix a typo, and expand a comment.

svn path=/trunk/; revision=35330
2011-01-02 21:27:57 +00:00
Guy Harris a8bc4a0d13 Rename the routines that handle dissector tables with unsigned integer
keys to have _uint in their names, to match the routines that handle
dissector tables with string keys.  (Using _port can confuse people into
thinking they're intended solely for use with TCP/UDP/etc. ports when,
in fact, they work better for things such as Ethernet types, where the
binding of particular values to particular protocols are a lot
stronger.)

svn path=/trunk/; revision=35224
2010-12-20 05:35:29 +00:00
Anders Broman bb0eefd834 Fix a cut-n-paste error.
svn path=/trunk/; revision=34866
2010-11-14 14:13:52 +00:00
Anders Broman 2c042dcd15 Use value_string_ext.
svn path=/trunk/; revision=34845
2010-11-11 21:18:15 +00:00
Stig Bjørlykke 34d9ef736b Added an expert info for illegal integer length.
svn path=/trunk/; revision=34820
2010-11-09 12:17:11 +00:00
Stig Bjørlykke c56ac0d6db Removed calls to proto_item_set_expert_flags(), as this will be called
in expert_add_info_format().

svn path=/trunk/; revision=34819
2010-11-09 12:15:55 +00:00
Jeff Morriss e17b9ccec1 Rev 29427 added packet_add_new_data_source() with a comment indicating that
the data source does not need to be allocated if (!tree).

Rev 30158 took the if (!tree) check out indicating that the check was invalid.

So: (since packet_add_new_data_source() now only calls add_new_data_source()),
remove packet_add_new_data_source().

svn path=/trunk/; revision=34717
2010-10-30 16:00:30 +00:00