Commit Graph

156 Commits

Author SHA1 Message Date
Ronnie Sahlberg 7d0ed23854 from Laurent Constantin
updates to smb
A patch for packet-smb.c is attached:
 - it improves timeout decoding
 - it defines common NT transaction IOCTL functions
 - it corrects decoding of resume key in search queries
 - it defines a new function dissect_4_2_16_8_unsure() to replace
   dissect_4_2_16_8(). I'm unsure if it is correct. As said in
   comments, it works for me, but I find strange that nobody noticed
   dissect_4_2_16_8() was wrong. So, it is between "#if 0".
   Someone else should confirm dissect_4_2_16_8_unsure() works
   before activating it.



svn path=/trunk/; revision=16494
2005-11-12 21:56:02 +00:00
Ronnie Sahlberg 15f13b23a0 improve the dissection of Create and fill in most of the fields
svn path=/trunk/; revision=16490
2005-11-12 11:27:34 +00:00
Ronnie Sahlberg 8b68d91039 dissect more of Close request/response
svn path=/trunk/; revision=16487
2005-11-12 10:07:12 +00:00
Guy Harris 2a8e47b11a Don't ensure all the bytes of a security descriptor exist before calling
"dissect_nt_sec_desc()".  Add a Boolean argument to
"dissect_nt_sec_desc()" to indicate whether a length was passed to it
(so we don't treat -1 as a special value; we want to stop treating -1 as
a special length value, and, in fact, want to stop treating *any*
negative length values specially, so that we don't have to worry about
passing arbitrary 32-bit values from packets as lengths), and have
"dissect_nt_sec_desc()" initially create the protocol tree item for the
security descriptor with a length of "go to the end of the tvbuff", and
set the length once we're done dissecting it - and, if the length was
specified, check at *that* point, *after* we've dissected the security
descriptor, whether we have the entire security descriptor in the
tvbuff.

That means that we don't have to worry about overflows after
"dissect_nt_sec_desc()" returns - if the length was so large that we
would have gotten an overflow, we'd have thrown an exception in the
"tvb_ensure_bytes_exist()" call at the end of "dissect_nt_sec_desc()".

Do sanity checks on offsets within the security descriptor, so we know
the item referred to by the offset is after the fixed-length portion of
the descriptor.

svn path=/trunk/; revision=16113
2005-10-04 10:23:40 +00:00
Guy Harris 7aa4b4ffe1 Make "top_tree" static; nobody else uses it, and if they're both not
static, they collide with one another in builds on at least some
platforms.

svn path=/trunk/; revision=16049
2005-09-29 01:31:19 +00:00
Ulf Lamping 9a42ef9536 fix #480: Change defaults for all reassembling settings to ON
I've changed all settings I could find to TRUE. It might be reasonable to change some protocol settings back to FALSE, if reassembling fails very often.

svn path=/trunk/; revision=16048
2005-09-28 22:15:38 +00:00
Guy Harris ab2dca9114 Move some headers for stuff defined by a dissector into epan/dissectors
- and rename smb.h to packet-smb.h, as it's packet-smb.c's header file.

svn path=/trunk/; revision=15845
2005-09-17 00:31:15 +00:00
Guy Harris b7b80d94be Move a pile of protocol-related headers from the top-level source
directory to the epan directory.  Some of them should perhaps ultimately
be moved to epan/dissectors, if they pertain only to stuff exported by a
particular dissector.

Fix Gerald's e-mail address in files we're moving.

svn path=/trunk/; revision=15844
2005-09-17 00:02:31 +00:00
Gerald Combs a242f1926b In smb_trans_defragment(), throw an exception if we encounter a too-large
fragment size.  The limit is conservatively set at 65536 bytes.  It may
have to be increased.  Fixes bug 421.

Add an entry to the release notes.

svn path=/trunk/; revision=15789
2005-09-13 19:01:01 +00:00
Ulf Lamping 6f43fbb2f0 EVERYTHING IN THE BUILDBOT IS GOING TO BE RED!!! Sorry!
I've done more than a day to change the timestamp resolution from microseconds to nanoseconds. As I really don't want to loose those changes, I'm going to check in the changes I've done so far. Hopefully someone else will give me a helping hand with the things left ...

What's done: I've changed the timestamp resolution from usec to nsec in almost any place in the sources. I've changed parts of the implementation in nstime.s/.h and a lot of places elsewhere.

As I don't understand the editcap source (well, I'm maybe just too tired right now), hopefully someone else might be able to fix this soon.

Doing all those changes, we get native nanosecond timestamp resolution in Ethereal. After fixing all the remaining issues, I'll take a look how to display this in a convenient way...

As I've also changed the wiretap timestamp resolution from usec to nsec we might want to change the wiretap version number...

svn path=/trunk/; revision=15520
2005-08-24 21:31:56 +00:00
Ulf Lamping 925489be0b removed MSVC warnings:
packet-camel.c(6829) : warning C4101: 'version_str' : unreferenced local variable
packet-quakeworld.c(172) : warning C4090: 'return' : different 'const' qualifiers
packet-smb.c(10859) : warning C4101: 'target_name_len' : unreferenced local variable
packet-smb.c(10860) : warning C4101: 'fn_len' : unreferenced local variable
packet-smb.c(10858) : warning C4101: 'fn' : unreferenced local variable

svn path=/trunk/; revision=15474
2005-08-20 15:58:42 +00:00
Guy Harris e5c09b21aa Use get_timedelta() to get the difference between two times.
svn path=/trunk/; revision=15455
2005-08-20 02:15:02 +00:00
Gerald Combs 88f6cd56ee Restore pinfo->private_data after calling another dissector, in case it gets
overwritten.  Fixes bug 367.

svn path=/trunk/; revision=15435
2005-08-19 18:28:50 +00:00
Ulf Lamping 495eb1b788 snprintf -> g_snprintf
svn path=/trunk/; revision=15398
2005-08-17 23:10:28 +00:00
Ronnie Sahlberg 75f38fa0a5 add SetFileInfo level 1013 SetDispositionInfo decoding
svn path=/trunk/; revision=15374
2005-08-16 08:40:06 +00:00
Ronnie Sahlberg c30eeef7d8 some more gmemchunk -> se_alloc() updates
there are only 5 gmemchunks left   but they have different litetime for their allocations   than the 100+   ones that have been removed.

The remaining 5 should be converted some other way.




svn path=/trunk/; revision=15328
2005-08-13 01:29:31 +00:00
Ronnie Sahlberg ec3ab9ec3e rename ep_tvb_get_string() to tvb_get_ephemeral_string() asnd update the documentation in README.developer
svn path=/trunk/; revision=15270
2005-08-10 13:41:13 +00:00
Guy Harris 7b31da8b11 DissectorError is not supposed to be directly thrown; one should use the
various DISSECTOR_ macros, so the error message includes an indication
of the problem, and the file and line number.

svn path=/trunk/; revision=15237
2005-08-06 04:01:38 +00:00
Gerald Combs b992c73391 In packet-frame.c, don't free static memory when we throw a
DissectorError.  In packet-kerberos.c, restore pinfo->private_data if
we throw an exception, which keeps the SMB dissector from throwing
a DissectorError.  Initialize variables in other places to squelch
valgrind warnings.

svn path=/trunk/; revision=15235
2005-08-06 03:43:42 +00:00
Jörg Mayer 69dcb66cd9 More char -> const char warning fixes
svn path=/trunk/; revision=15218
2005-08-05 00:23:22 +00:00
Ronnie Sahlberg 0d7a2abbc7 some more memification of tvb_get_string() no obvious memleaks fixed this time :-(
svn path=/trunk/; revision=15131
2005-07-28 09:47:28 +00:00
Ronnie Sahlberg 9f6a3801d9 minor fix to add required alignment for AueryPathInfo level 0x107
it decodes "better"   but might still be broken since none of the packets I have match any of the "standards"




svn path=/trunk/; revision=14952
2005-07-19 08:58:20 +00:00
Guy Harris ab797734dd Get rid of the private "my_match_strval()" routine in many dissectors;
add a "match_strval_idx()" routine that does the same thing, and have
"match_strval()" call it.

Make those routines, and "val_to_str()", return a "const" pointer. 
Update dissectors as necessary to squelch compiler warnings produced by
that.

Use "val_to_str()" rather than using "match_strval()" and then, if the
result is null, substituting a specific string.  Clean up some other
"match_strval()"/"val_to_str()" usages.

Add a null pointer check in the NDPS dissector's "attribute_value()"
routine, as it's not clear that "global_attribute_name" won't be null at
that point.

Make some global variables in the AFS4INT dissector local.

Make some routines not used outside the module they're in static.

Make some tables "static const".

Clean up white space.

Fix Gerald's address in some files.

svn path=/trunk/; revision=14786
2005-06-26 19:56:52 +00:00
Ulf Lamping debc4cd849 packet-smb.c(14406) : warning C4090: 'return' : different 'const' qualifiers
svn path=/trunk/; revision=14780
2005-06-26 11:21:39 +00:00
Ulf Lamping e2c3b60280 add a generated toplevel line between the TCP protocol and the desegmented content, to better understand what's going on while desegmenting.
We'll have to add similar mechanisms for other protocols as well...

svn path=/trunk/; revision=14527
2005-06-02 18:52:55 +00:00
Ulf Lamping 5c4f877031 bugfix (fuzz_tested): t2i can be zero, test at all places before using it
svn path=/trunk/; revision=14526
2005-06-02 18:44:17 +00:00
Ulf Lamping e8c5cd2342 don't go into an (almost) endless loop, if si->info_count is -1, which is the default value. Seems to be a general bug worth to thought about, but I don't know the SMB internals and this bugfix should work anyway.
Found this by a privately fuzzed capture file (sorry, can't give it away)

svn path=/trunk/; revision=14501
2005-05-30 21:10:21 +00:00
Ulf Lamping feb55854c7 fix #215: the field hf_smb_print_spool_file_name used the wrong type, use FT_STRINGZ to add a string
svn path=/trunk/; revision=14482
2005-05-30 03:10:37 +00:00
Gerald Combs 7effa95f95 Throw an exception if AndXOffset is less than the current offset. Fixes bug
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
2005-05-14 19:13:02 +00:00
Gerald Combs fe5561715b Don't try to feed a null pointer to strncmp(). Fixes bug 158.
Shouldn't the number of fuzz bugs decrease asymptotically at some
point?

svn path=/trunk/; revision=14306
2005-05-04 17:02:56 +00:00
Gerald Combs 1111832d96 In all functions that require smb_info data, throw an exception if we
can't fetch it.  Fix a few more null pointer dereferences.  Fixes bug 79.

svn path=/trunk/; revision=14149
2005-04-20 16:23:22 +00:00
Gerald Combs 83f3aa6e08 Add an extra_info_type field to smb_extra_info_t so that we can make
sure we're not referencing a fid when we think we're referencing an
smb_nt_transact_info_t pointer.  (A fuzzed capture I have triggers
this behavior).


svn path=/trunk/; revision=14107
2005-04-16 21:54:32 +00:00
Gerald Combs 5f4347c46d Add a bunch of tvb_ensure_bytes_exist() calls. Some of these may not be
neccessary -- someone more knowledgeable about the SMB dissector may want
to check this.  Throw a ReportedBoundsError instead of exiting.

svn path=/trunk/; revision=14077
2005-04-14 19:43:00 +00:00
Gerald Combs 3056b9e17d Add a tvb_ensure_bytes_exist().
svn path=/trunk/; revision=13968
2005-03-29 15:38:11 +00:00
Guy Harris e41c4740c9 Handle XNS IDP socket numbers.
Handle SMB-over-SPP.

svn path=/trunk/; revision=13635
2005-03-06 20:13:58 +00:00
Lars Roland ec9ca01616 Move the following files from /trunk to /trunk/epan:
asn1.[ch]
follow.[ch]
ptvcursor.[ch]
reassemble.[ch]
xmlstub.[ch]

fix #include statements accordingly.

svn path=/trunk/; revision=13366
2005-02-09 23:38:00 +00:00
Anders Broman 851ecd2ac4 From Jon Ringle:
1) Added a setup_frame parameter to conversation_t
2) Used the conversation_t next to maintain a list of conversations with the 
same src/dest tuple but different setup_frame number.
3) Changed the signature of find_conversation() and conversation_new() to pass 
in the frame number.
4) Adjusted packet-sdp to select RTP conversation if both m=audio and m=image 
are present, and T.38 conversation if only m=image is present. I expect that 
RTP/T.38 dissecting to be better, but I don't have a way to generate T.38 
packets.

svn path=/trunk/; revision=13243
2005-02-02 20:07:03 +00:00
Ulf Lamping 78ff68d4b5 a lot of warnings removed, most of them about pointer to int casts without using the appropriate GLib macros
svn path=/trunk/; revision=12832
2004-12-25 13:49:30 +00:00
Richard Sharpe 8190410fb3 Clean up one more instance of 8-byte timestamps in SMB. Have to work on
the 4-byte ones soon.


svn path=/trunk/; revision=12818
2004-12-22 19:44:42 +00:00
Richard Sharpe 80e3a2ed9c Add a dissection for the GET_NETWORK_FILE_OPEN_INFO and make some stuff that
we do in several places into a subroutine. We need to do it also with the 
4-byte time stamps that are dissected all over the place. 

I had thought that that last unknown in the returned structure might be 
a count of the number of clients that have the file open, but a simple test
suggests that that is not the case.


svn path=/trunk/; revision=12812
2004-12-22 02:40:33 +00:00
Ronnie Sahlberg 9f87afbca5 mark some fields as GENERATED fields
svn path=/trunk/; revision=12771
2004-12-19 03:30:46 +00:00
Ronnie Sahlberg 7def0aa70c the mid values in smb are too unreliable for request/response matching since they wrap so quickly.
This has the effect that if you have a capture file with a hole in it, sa say when snoop or similar stops capturing packets for a while while writing the data to disk   you often end up with a packet just after the hole that is a response packet  and which ethereal mistakenly matches with a request/response from before the hole.


now,  when the first response is seen to a request   remove the entry from the unmatched table so that no other response can match the same request.



svn path=/trunk/; revision=12770
2004-12-19 03:19:53 +00:00
Guy Harris 6e10679910 Move smb.trans2.cmd and smb.nt.function near the top of the hf[] array,
so they show up near the top of the list of fields in the dialog box for
adding a field to a filter - those are probably quite likely to be used
in filter expressions where you don't happen to remember the name of the
field, and those should show up at the top so you don't have to scroll
through the entire list of fields to find them.  (I suspect most other
fields either will rarely be filtered on at all, or would be filtered
only mainly with the "Match" or "Prepare" filter items, where you don't
need to know the name or even the text of the field.)

svn path=/trunk/; revision=12489
2004-11-05 21:39:31 +00:00
Guy Harris 915fe77f75 From Laurent Constantin: fix a (presumed) cut-and-pasteo.
svn path=/trunk/; revision=12342
2004-10-18 17:17:38 +00:00
Guy Harris 5f57d42dac Handle continuation replies to transactions better - try to match them
up with the original request, without matching unrelated replies with
that request.

svn path=/trunk/; revision=12145
2004-09-30 01:04:33 +00:00
Guy Harris 6472876ab3 Move the tap infrastructure to the epan directory.
svn path=/trunk/; revision=12128
2004-09-29 00:06:36 +00:00
Guy Harris bbe7f89742 Move prefs.c and prefs.h into the epan subdirectory.
svn path=/trunk/; revision=12115
2004-09-27 22:55:15 +00:00
Ronnie Sahlberg 4d1dd8df41 Fix the InfoQueryEASize infolevel for SetPathInfo and QueryPathInfo SMB's
svn path=/trunk/; revision=11821
2004-08-24 09:07:04 +00:00
Guy Harris c68f62210f Add "tvb_get_ntoh64()" and "tvb_get_letoh64()" routines to fetch 64-bit
integers.

Make FT_INT64 and FT_UINT64 add numerical values, rather than byte-array
values, to the protocol tree, and add routines to add specified 64-bit
integer values to the protocol tree.

Use those routines in the RSVP dissector.

svn path=/trunk/; revision=11796
2004-08-22 00:31:58 +00:00
Ulf Lamping cf22aa8bbc cast define of TIME_T_MIN and TIME_T_MAX to (time_t), as MSVC seems to have problems with this definition and throws a warning "convert negative constant to unsigned integer"
svn path=/trunk/; revision=11753
2004-08-16 17:18:04 +00:00
Guy Harris 7af1c37cae From Ronnie Sahlberg: update the fs attributes to be more complete and
correctly dissected.

svn path=/trunk/; revision=11752
2004-08-16 07:59:18 +00:00
Guy Harris 16b5c67a2b Note that the CIFS spec claims that the service name string in Tree
Connect AndX is always ASCII; we don't assume it is - the spec may very
well be wrong.

svn path=/trunk/; revision=11726
2004-08-12 21:32:20 +00:00
Guy Harris 13bb12c4f1 Move a bunch of stuff that's more Windows-related than SMB-related to
"packet-windows-common.[ch]".

svn path=/trunk/; revision=11592
2004-08-03 02:28:49 +00:00
Guy Harris 1ef3caa637 Move the NTLMv2 blob stuff back into packet-ntlmssp.c - it's more
NTLMSSP-related than SMB-related, and documents about NTLMSSP talk about
it, so it's a little more convenient to keep all that stuff together -
and export it through a packet-ntlmssp.h header.

svn path=/trunk/; revision=11585
2004-08-02 23:14:32 +00:00
Guy Harris bbbe995ddb Use "format_text()" on strings to be put into the Info column and the
display representation of items in the protocol tree, so we don't get
hosed by non-printable characters.

svn path=/trunk/; revision=11489
2004-07-23 22:39:08 +00:00
Gilbert Ramirez 669db206cb Move dissectors to epan/dissectors directory.
Also move ncp222.py, x11-fields, process-x11-fields.pl,
make-reg-dotc, and make-reg-dotc.py.

Adjust #include lines in files that include packet-*.h
files.

svn path=/trunk/; revision=11410
2004-07-18 18:06:47 +00:00