epan/dissectors/packet-sigcomp.c
--------------------------------
Function dissect_sigcomp:
1. Make sure the temporary buffer that is used to load byte-code from
state is zeroed, since the function udvm_state_access implicitly
relies on this.
2. Pass the SigComp message header length, state length and partial
state length to decompress_sigcomp_message.
3. Removed the state_vars_valid parameter from calls to
udvm_state_access.
svn path=/trunk/; revision=14667
epan/sigcomp_state_hdlr.c epan/sigcomp_state_hdlr.h
---------------------------------------------------
Function udvm_state_access:
1. Removed the state_vars_valid parameter. It is no longer used.
2. The function now correctly updates each of state_length,
state_address and state_instruction with saved state value.
[Previously this was only done for state referenced in the SigComp
message header.]
3. Removed code that (incorrectly) read byte_copy_left from UDVM memory
within the loop that writes the state to UDVM memory.
4. Removed the code that set the useful values in UDVM memory. This
should only be done for state referenced in the SigComp message
header. (The decompress_sigcomp_message function, sets the useful
values.)
epan/sigcomp-udvm.c epan/sigcomp-udvm.h
---------------------------------------
Function decompress_sigcomp_message:
1. Added three new parameters; header_len, byte_code_state_len,
byte_code_id_len. The byte_code_state_len and byte_code_id_len
are used to set the useful values in UDVM memory. The
header_len is required to calculate the cycles available
for decompression.
2. Various minor corrections to spellings, etc in generated
messages.
3. Reduced the number of lines of output for print_level_1. Now
the execution trace shows the instruction name and parameter
values on one line.
[This was done because, we found that even at the lowest
level of detail ethereal became unusably slow; running on
a 500 MHz SPARC. This seems to be related to the number of
lines produced by the SigComp trace, which can easily be over
1000 with the modified code.]
4. Removed the used of some floating point functions. In all
cases they were unnecessary and could potentially cause the
code to produce the wrong results on some platforms (although
this is unlikely).
5. The useful values are now set correctly, using the new
byte_code_state_len and byte_code_id_len parameters.
6. The message header length is now included in the calculation of
maximum_UDVM_cycles. Previously, the calculation could underestimate
the value, resulting in the (small) chance that some legitimate
messages might fail to decompress.
Note: The calculation might now slightly over-estimate the cycles
but this is a reasonable thing to do.
7. Implemented the PUSH, POP, CALL and RETURN instructions.
Note: The two SORT instructions and the CRC and SHA-1 instructions
are still not implemented.
8. The COPY and COPY-LITERAL instructions now apply the
byte-copying-rules to the source address as well as the destination
address.
9. The COPY-LITERAL and COPY-OFFSET now correctly handle the
destination operand. Previously, it was possible for the destination
to be left at byte_copy_right when it should be left at
byte_copy_left.
10. All three COPY instructions will now behave correctly if the source
or destination start at byte_copy_right; i.e. they read/write to
byte_copy_right, byte_copy_right+1, etc. Previously the parameters
would wrap to byte_copy_left.
11. The COPY-OFFSET instruction now correctly calculates the source
address for all values of offset. Previously a very large offset
(greater than the circular buffer size) could cause the starting
position to be mis-calculated.
12. Modulo 65536 arithmetic has been added in some places where it was
missing.
[Only when noticed, we have not been able to check all the code.]
13. Some redundant code was removed for the INPUT-BITS instruction.
Also, INPUT-BITS (0, x, x) now correctly discards spare bits when
the P-bit, has changed.
14. Corrected the cycles used calculation for the INPUT-BITS
instruction.
15. Corrected some minor cases where the used_udvm_cycles was not
incremented.
[Not really a problem, but it allowed us to verify correctness with
some of the SigComp torture tests.]
16. Removed some redundant code in INPUT-HUFFMAN (and reorganised some
comments to keep them making sense).
Function decomp_dispatch_get_bits:
1. This has been rewritten. The original version could not correctly
handle requests for more than 8 bits. The new version is cleaner and
correctly handles all cases.
svn path=/trunk/; revision=14666
Register "standard" and "lock_info_col" as obsolete preferences, so
they're silently ignored rather than triggering warnings.
Propagate changes to check for "dissect_ber_octet_string()" supplying a
null tvbuff pointer from the checkins to the generated dissector ("Do
not modify this file" means "Do not modify this file"!) to the tcap.cnf
file, so that they're not lost if the dissector is regenerated. (Don't
propagate the checks for "tvb_new_subset()" returning null - it never
returns null.)
Pass -1 to "tvb_new_subset()" when appropriate.
When looping over packet data, check against the reported length, not
the captured length, so we indicate a short frame if we get stopped by
the snapshot length.
Get rid of unused variables.
svn path=/trunk/; revision=14658
argument.
Report a non-integral type used with "dissect_per_integer()" with an
explicit "REPORT_DISSECTOR_BUG()" call, as that's a dissector bug.
svn path=/trunk/; revision=14651
parameter to many functions inside the ISAKMP dissector, as well as to
the "isakmp_dissect_payloads()" routine it exports. Get rid of
"isakmp_set_version()", as the version can be passed to
"isakmp_dissect_payloads()" from the KINK dissector.
Put the declaration of "isakmp_dissect_payloads()" into a
"packet-isakmp.h" header, and have "packet-isakmp.c" and "packet-kink.h"
include it rather than declariing "isakmp_dissect_payloads()" itself -
or not doing so at all.
svn path=/trunk/; revision=14648
Fix bounds checking in lemon.c. Fix up an if/else block in
packet-dcerpc-samr.c. Fix hex printing in packet-gtp.c.
Fix other problems discovered by Steve:
Fix a bounds check in packet-isis-lsp.c. Also, fix netmask printing
on non-little-endian machines. Add a comment about adding a netmask
routine to to_str.c. Add bounds checks to packet-ncp2222.inc.
All of these apply to bug 217.
svn path=/trunk/; revision=14627
ourselves. This fixes a potential off-by-one error found by Steve Grubb.
Add two new -G options: defaultprefs and currentprefs. The first dumps
the default preferences to stdout and the second dumps the user's prefs
to stdout.
svn path=/trunk/; revision=14624
A CSM_ENCAPS dissector to use with ethereal.
The CSM_ENCAPS is a protocol used by MindSpeed to communicate with your products, and configure VoIP channels.
svn path=/trunk/; revision=14612
in a simple approach, I've replaced all g_assert() and g_assert_not_reached() calls by their exception throwing counterparts DISSECTOR_ASSERT() and DISSECTOR_ASSERT_NOT_REACHED()
this will replace application crash by showing a dissector bug, which is the desired behaviour
there were some g_assert calls in the protocol registering functions, which might not be acting as expected now, but to be able to simply search for g_assert in the future I've replaced that calls too
one g_assert remained, the one when someone throws an unknown exception "into" packet_frame.c, but IMHO this one should remain.
svn path=/trunk/; revision=14608
- beautify TCAP decoding without upper dissector associated.
With a couple of if (parameter_tvb) trown in to hopfully fix a Buildbot crash output
svn path=/trunk/; revision=14590
- I have had to make some changes to packet-ber to allow for PRIVATE and APPLICATION tags.
- Both ANSI and ITU variants supported without configuration.
- Asn.1 dissectors can now register using an OID value as well as an SSN, the oid it tried first.
svn path=/trunk/; revision=14572
a patch which adds support for displaying jxta
conversations and endpoints from the 'Statistics' menu. Also adds :
- a generated field to Welcome messages to indicate whether this
welcome is from the initiator or the receiver. You can filter on this
field with 'jxta.welcome.initiator==[0|1]'
- Marks the source and destination fields of message added in the last
patch as generated fields. (Saw it being done for some other protocol).
- Cleans up dissection of Message which used to assume it would
dissected more than one set of hdr/message per tvbuff. Now it only
attempts to dissect one.
- Uses GMemChunk for tap info and for conversation data rather than
g_malloc() There's still a major leakage of g_malloc()ed the c-strings
which are used in jxta addresses. Any suggestions for how these can be
allocated such that they can be freed re-init is called would be
appreciated. For address objects whose data ptr doesn't point into a
tvbuff it's not clear what the lifecyle of an address object is.
- Fixes a bug with filling in the of the transport layer conversation
data. >= vs. >
svn path=/trunk/; revision=14558
BTW: time for something like a "NotImplementedException"?!?, this seems to be a common mechanism, if a dissector hasn't implemented all protocol elemements (yet)
svn path=/trunk/; revision=14554
Extends the jxta dissector to add higher level conversation
tracking, improved display, tapping and fixes a bug which caused some
conversations to get lost.
svn path=/trunk/; revision=14534
I don't know if the output as hex is appropriate, someone with more WBXML knowledge might have a look (however, it's done for unknown values only)
svn path=/trunk/; revision=14522
replace some deprecated proto_tree_add_..._hidden() calls by seperate calls by proto_tree_add_...() and PROTO_ITEM_SET_HIDDEN()
some other cosmetic changes
svn path=/trunk/; revision=14518
set "n*DCERPC" in the proto column if more than one RPC call in a TCP PDU, overwriting the interface name, as there's probably more than one interface involved
add some more RPC info to the toplevel RPC proto_item
add a comment, if some bytes are not dissected but might be in the next TCP PDU
svn path=/trunk/; revision=14490
make kink compile again on non-kerberos builds.
encapsulate a call to decrypt kerberos to only be compiled in when compiling with kerberos.
svn path=/trunk/; revision=14458
packet-rdt.c:
- register a configurable UDP port (off by default, but needed where setup traffic isn't captured)
- dissect extra 'buffer info' fields
- move bit fields into 'flags' subtrees
- misc. minor fixes and improvements (mainly formatting)
Missed eralier...
svn path=/trunk/; revision=14456
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
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
From Martin Mathieson:
packet-rdt.c:
- register a configurable UDP port (off by default, but needed where setup traffic isn't captured)
- dissect extra 'buffer info' fields
- move bit fields into 'flags' subtrees
- misc. minor fixes and improvements (mainly formatting)
packet-rtsp.c:
- improve detection of RDT as the transport
- allow interleaved frame data to be dissected as RDT packets
svn path=/trunk/; revision=14443
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
packet-bacapp.c:1266:1: warning: C++ style comments are not allowed in ISO C90
packet-bacapp.c:1266:1: warning: (this will be reported only once per input file)
svn path=/trunk/; revision=14418
* added additional value string enumerations from BACnet-2004
* removed vendor specific value string enumerations
* corrected some value strings enumerations that were incorrect
* refactored some common strings as strings + format
* refactored some value strings to use a reserved range and a
proprietary range by using val_to_split_str function which now correctly
shows the split range when a value is not matched.
* corrected some spelling errors
* converted some item text values to dissector registration
* added protocol tree for the BACnet tag headers
* added value strings tree display for some bit string BACnet properties
* added value strings tree display for some enumerated BACnet properties
* changed the conversion of signed, unsigned, and enumerated BACnet
values to use ntohx functions.
* added proper handling for large values of signed, unsigned, and
enumerated BACnet values.
* refactored BACnet Null and Boolean Tag tree
* refactored BACnet Real and Double Tag tree
* changed comments into functions for special tags
* changed some white space to match existing file style
* refactored tvb_reported_length to tvb_length_remaining to simplify
* corrected octet-string tree when length is zero
* refactored octet-string tree to use tvb_bytes_to_str
* corrected application tagged productions that were context tagged
* corrected context tagged productions that were application tagged
* corrected offset for BACnet character strings
* refactored some identical service request tree handling
* changed confirmed APDU to highlight the correct portion of the APDU
* changed some dissector registration values to display as decimal
* changed cast in call to iconv() to fix compiler warning
* corrected bit-wise AND in AtomicFile tree handling
packet-bvlc.c
* added error text in tree when encoded length doesn't match actual length
svn path=/trunk/; revision=14417
new version of the RDT dissector. It turns out that
specs are available for this protocol on www.helixcommunity.org - this
version was written by myself and Tom Marshall of RealNetworks, Inc.
I Changed stream_id and asm_rule_number to be guint16 to fix compiler warnings.
svn path=/trunk/; revision=14372
163. I'm not sure if this fix is entirely correct, but it doesn't appear to
have affected any SMB captures here adversely.
svn path=/trunk/; revision=14365
interprocedural, so it knows "sip_parse_line()" doesn't always set
"*token_1_len", but it doesn't know that if it doesn't return OTHER_LINE
it *does* always set it, so it's safe not to set it as long as it's
never used if the return value is OTHER_LINE).
svn path=/trunk/; revision=14355
This is very naughty and will cause problems when we have assigned a dissector to a dynamic port using conversation_set_dissector().
To make ethereal handle this case I have changed the try_conversation_dissector() to allow it to fail and return 0, meaning yes there is indeed a protocol registered for this conversation but that protocol rejected this packet.
(which only happens for "new" style dissectors, "old" style dissectors will never reject a packet that way)
When this happens the decode_udp_port() helper will still allow other dissectors to be tried, in the hope that the conversation is now used for some other protocol and thus someone else might be able to decode the packet.
Update SNMP and TFTP dissectors to check that even if there already is a conversation but that conversation does NOT have snmp/tftp registered as the dissector for it, then create a new conversation anyway and attach the proper dissector.
Since ethereal keeps track of which frame number a conversation started in, this actually works really well.
svn path=/trunk/; revision=14345
Introduce a function for disseting a sip uri in general
TODO:
- add dissection of contact and uri parameters
- simplify the ugly code for dissecting "to" and "from" headers
by using the new function for uri dissection
svn path=/trunk/; revision=14330
Make sure the delta is > 0.
This intends to fix bug 160, although with a capture file
to test it, I can't be totally sure.
svn path=/trunk/; revision=14322