Commit Graph

374 Commits

Author SHA1 Message Date
Guy Harris 4d6e4cebc5 From Jim McDonough: add one more nt status code to
packet-dcerpc-smb.c that is often returned from the winreg abortshutdown
operation.

svn path=/trunk/; revision=8767
2003-10-24 00:36:06 +00:00
Ronnie Sahlberg 2f211fd8fb The ACL revision field is one byte, not 2 bytes.
svn path=/trunk/; revision=8764
2003-10-23 08:40:56 +00:00
Guy Harris 28eb53f033 The max count high field is 32 bits, and, in order to compare it
against 0xffffffff, it has to be extracted into a 32-bit variable.

svn path=/trunk/; revision=8575
2003-10-01 08:53:12 +00:00
Jörg Mayer 92f32c1c51 Added comment: XXX Argh maxcnt_high is guint16 and thus 16 bit -> always false
svn path=/trunk/; revision=8567
2003-09-29 19:17:34 +00:00
Ronnie Sahlberg ed4fde5e5a in ReadAndX
when reading what could potentially be the maxcount high field
assume that IF it is 0xFFFFFFFF  that it is not maxcount high at all but
instead just some padding/reserved bytes.

If this field is 0xFFFFFFFF just ignore it.

svn path=/trunk/; revision=8559
2003-09-28 00:11:01 +00:00
Guy Harris 3a174693ba Clean up white space.
svn path=/trunk/; revision=8302
2003-08-28 22:51:07 +00:00
Guy Harris 8e63c3ba66 Label the Count field in a Write AndX response as such, rather than as
"Data Length".

Fix some low-16-bits-of fields to have "_low", rather than "_high", at
the ends of their names.

svn path=/trunk/; revision=8204
2003-08-21 08:18:09 +00:00
Guy Harris d4c0daceee The MaxCountHigh field in a READ_ANDX is given as a ULONG, i.e. 32 bits,
in the SNIA CIFS spec, although it's probably a 16-bit MaxCountHigh and
a 16-bit reserved field (it's a 32-bit timeout field in an earlier SMB
spec).

Call the MaxCount and MaxCountHigh fields in a READ_ANDX "Max Count Low"
and "Max Count High", rather than "Data Length Low" and "Data Length
High".

svn path=/trunk/; revision=8198
2003-08-21 05:42:47 +00:00
Ronnie Sahlberg 09179e8820 The length and offset for large file support for LockingAndX was broken.
We treated this as just a normal 64bit integer in LittleEndian format.
However, this is actually 2   32 bit integers, each in LittleEndian format
but the two 32 bit fields are stored in BigEndian format relative to each other.

Since we dont do 64 bit aritmetic I had to convert the field to FT_STRING as well
so sorry, no creative len>xxx    filters anymore.   but at least we present
the data in the correct way in the tree pane.

We didnt see this one earlier since most locking_andx requests are probably for offset : 0   and length: -

Funnily enough it seems that certain popular commercial products have the same bug as ethereal had up until 5 minutes ago.

svn path=/trunk/; revision=8196
2003-08-20 10:32:23 +00:00
Ronnie Sahlberg 4ee16a83eb Update to the SMB dissector so that the HighLen 16 bit integer is decoded
instead of as being represented as RESERVED.
This updates the ReadAndX and WriteAndX calls and replies.

This should really try to keep track of the negotiation of the conversation to make sure we only do it for those sessions where LARGE file io has been negotiated.  Currently it does it for all Read/Write AndX calls.
It is probably safe to do so since for those clients where this is not supported these bytes are RESERVED and MBZ anyway.

svn path=/trunk/; revision=8191
2003-08-19 09:58:54 +00:00
Ronnie Sahlberg a6d080537b Update to SMB
Change the AndX command fields  to only place a filterable field in the tree when smb.cmd is NOT 0xff
If smb.cmd is 0xFF just place a text entry in the field instead.

This makes it more intuitive for users that try to use filters such as
smb.cmd!=0xXY   since the filter will no longer behave "unexpectedly" and fail to filter out any of the AndX commands.

Yes,   they should really use !smb.cmd==0xXY instead but one cant explain this to every single user.

I dont think anyone would ever want to filter for smb.cmd==0xFF anyway

svn path=/trunk/; revision=8178
2003-08-17 21:21:50 +00:00
Guy Harris 20d2c86dc1 Get rid of an unused variable.
svn path=/trunk/; revision=8170
2003-08-16 00:31:16 +00:00
Guy Harris 76d14c168e In "dissect_transaction2_request_parameters()", "bc" gets decremented as
we go through the data, so we can't compare it with the current offset
minus the starting offset - we should just test, and use, its value
directly, as, at the end, it reflects the amount of data left.

svn path=/trunk/; revision=8167
2003-08-15 23:57:52 +00:00
Tim Potter 439c6381a7 Some fixes for UNIX CIFS extensions. There's still a problem in the trans2
find response and we end up displaying malformed frame even though all data
has been dissected.

svn path=/trunk/; revision=8166
2003-08-15 03:23:31 +00:00
Tim Potter 06e38e5c2c Removed references to CIFS TR section numbers from various value_strings.
The strings are now in COL_INFO and the section numbers were cluttering it
up.

svn path=/trunk/; revision=8164
2003-08-14 00:24:13 +00:00
Tim Potter c690c5cb76 Make some abbreviations to some value_strings to save COL_INFO real estate:
transaction -> trans, information -> info.

Put value_string data in COL_INFO for trans2 query{path,file}info.

svn path=/trunk/; revision=8163
2003-08-13 04:03:11 +00:00
Tim Potter eea3681c62 Fixes for testing all variations of query fsinfo. There were a few
transpositions of subcommand numbers, and the query object id case was not
implemented.  I'm not sure about the query fs label info as it doesn't seem
to exist as a server procedure except in Samba.

svn path=/trunk/; revision=8162
2003-08-13 00:05:00 +00:00
Richard Sharpe edd22d3cff Dissect some more set attr calls ...
svn path=/trunk/; revision=8128
2003-08-04 22:28:57 +00:00
Tim Potter d33c5365da Support for CIFS UNIX extensions as documented in the CIFS TR 1.0,
Appendix D.

svn path=/trunk/; revision=8012
2003-07-10 04:48:59 +00:00
Tim Potter 59e1cb5d57 Add more entries to the query/set path/file info value_strings for
some extra info levels discovered by tridge.

Put subcommand information in COL_INFO for trans2 query fs/path/file
info.

svn path=/trunk/; revision=8011
2003-07-10 04:44:58 +00:00
Ronnie Sahlberg fc70d21834 The MID field in the SMB header is in reality only ~10 bits in size
so it is pretty common for MID values to be reused even in
moderately sized captures.

The test to compare that the command type between the request
and reply is not sufficient for when most of the commands between the client
and the server are the same (e.g. streaming Read/Write)

Change the matching so that ONLY the first "response" we see for a certain
open MID will be matched to the original request.

I.e.  Prevent
Read Request
Read Reply
[missing from capture] Read Request
Read Reply

From incorrectly matching the second reply (if it has a reused MID) with the
first request.

This makes the response time statistics a bit more reliable as well.

svn path=/trunk/; revision=7888
2003-06-15 00:35:49 +00:00
Guy Harris ee97ce3196 Add new routines:
tvb_get_string() - takes a tvbuff, an offset, and a length as
	arguments, allocates a buffer big enough to hold a string with
	the specified number of bytes plus an added null terminator
	(i.e., length+1), copies the specified number of bytes from the
	tvbuff, at the specified offset, to that buffer and puts in a
	null terminator, and returns a pointer to that buffer (or throws
	an exception before allocating the buffer if that many bytes
	aren't available in the tvbuff);

	tvb_get_stringz() - takes a tvbuff, an offset, and a pointer to
	a "gint" as arguments, gets the size of the null-terminated
	string starting at the specified offset in the tvbuff (throwing
	an exception if the null terminator isn't found), allocates a
	buffer big enough to hold that string, copies the string to that
	buffer, and returns a pointer to that buffer and stores the
	length of the string (including the terminating null) in the
	variable pointed to by the "gint" pointer.

Replace many pieces of code allocating a buffer and copying a string
with calls to "tvb_get_string()" (for one thing, "tvb_get_string()"
doesn't require you to remember that the argument to
"tvb_get_nstringz0()" is the size of the buffer into which you're
copying the string, which might be the length of the string to be copied
*plus 1*).

Don't use fixed-length buffers for null-terminated strings (even if the
code that generates those packets has a #define to limit the length of
the string).  Use "tvb_get_stringz()", instead.

In some cases where a value is fetched but is only used to pass an
argument to a "proto_tree_add_XXX" routine, use "proto_tree_add_item()"
instead.

svn path=/trunk/; revision=7859
2003-06-12 08:33:32 +00:00
Guy Harris a048cbebed Show the upper 2 bytes of the formerly-reserved area as a "High Part of
PID" even for SMB-over-IPX.

svn path=/trunk/; revision=7823
2003-06-10 05:28:02 +00:00
Guy Harris 9166bdd968 Put the right data into the protocol tree for the high 16 bits of the PID.
svn path=/trunk/; revision=7819
2003-06-09 22:59:11 +00:00
Richard Sharpe 21f9f7ec48 Dissect the 12-byte reserved field as a 2-byte PID high, 8-byte sig, and
2-byte reserved field.

svn path=/trunk/; revision=7812
2003-06-09 03:01:02 +00:00
Guy Harris 99f861be11 Update the section numbers in various information level strings to
reflect the 1.0 version of the CIFS spec.  Similarly update function
names containing section numbers.

Change the strings for query file levels 0x0200 and 0x0201 to say
"Query" rather than "Set" (we now have separate tables for "query" and
"set" information levels, as some of them differ), and get rid of the
string for 0x0202, as that's documented in the CIFS spec only as a "set"
level.

svn path=/trunk/; revision=7810
2003-06-09 00:02:13 +00:00
Guy Harris 84e74c735d The information levels for TRANS2_SET_{PATH,FILE}_INFORMATION are,
according to the SNIA CIFS 1.0 spec and some captures I've seen, are not
the same as for the corresponding TRANS2_GET_{PATH,FILE}_INFORMATION.
Handle the SET information levels as per the CIFS spec.

svn path=/trunk/; revision=7806
2003-06-08 09:11:04 +00:00
Tim Potter 13994411a9 Rename EA length field to EA list length. Field was originally just
list length before my previous commit.

svn path=/trunk/; revision=7797
2003-06-06 02:09:35 +00:00
Tim Potter ab7c3c1195 Dissect extended attribute lists in trans2 QUERY_FILE_INFORMATION,
info level 4.

svn path=/trunk/; revision=7796
2003-06-06 02:05:38 +00:00
Guy Harris 53c2e25a9f There can be more than one DCE RPC call per frame, e.g. there can be
multiple NetBIOS-over-TCP session service messages in a TCP segment, and
they can contain the final portions of different DCERPC calls.  Don't
assume a frame number is sufficient to identify DCE RPC calls.

svn path=/trunk/; revision=7777
2003-06-04 05:41:37 +00:00
Guy Harris 2573a5527a From Laurent Rabret: use "g_free()", not "free()", to free stuff
allocated with "g_malloc()" and related GLib routines.

svn path=/trunk/; revision=7758
2003-05-28 22:40:19 +00:00
Tim Potter c2036f97f1 Initialise sid_str in case dissect_nt_sid() can't return a string
representation for the sid.

svn path=/trunk/; revision=7719
2003-05-23 01:45:27 +00:00
Ronnie Sahlberg 5feaba4955 make dissect_nt_sid() return a sid string that also contains the proper name for the sid.
this prettifies some dcerpc interfaces

svn path=/trunk/; revision=7712
2003-05-22 11:32:06 +00:00
Ronnie Sahlberg 14f5d761c1 Change the interface to dissect_nt_sid so that we can provide a hf field to use
to describe the sid instead of the default smb.sid one

svn path=/trunk/; revision=7708
2003-05-21 10:16:10 +00:00
Ronnie Sahlberg be8c81fc84 Tap SMB packets before we call the dissecotrs so that even if there
is an exception (i.e. short packet) the tap listener will still
be alled.

svn path=/trunk/; revision=7684
2003-05-16 10:24:13 +00:00
Tim Potter cabe2eebf8 More work on dissecting generic and standard mappings for NT access masks.
svn path=/trunk/; revision=7668
2003-05-15 02:14:00 +00:00
Tim Potter 2b39831b5b Move the ntlmv2 response dissection out of packet-ntlmssp.c and in to
packet-smb-common.c so it can be used elsewhere.

Dissect a ntlmv2 response in a session setup SMB if detected.

svn path=/trunk/; revision=7655
2003-05-09 01:41:28 +00:00
Guy Harris 1025817e84 Add a "proto_item_set_end()" routine that sets the length of an item
given a tvbuff/offset pair referring to the byte past the end of the
item.  Use it in one place in the SMB dissector (there are plenty of
other places where it could be used as well).

svn path=/trunk/; revision=7603
2003-04-29 21:27:19 +00:00
Ronnie Sahlberg be831f9845 dissect_nt_access_mask() sometimes ami is NULL.
check that it is non-NULL before we dereference it.

svn path=/trunk/; revision=7592
2003-04-28 10:42:14 +00:00
Tim Potter e3dabb27e2 Move the specific rights dissection function and name into a structure
instead of passing them around as separate parameters.  This is a
prelude to adding generic and standard mapping to the access mask
dissection.

svn path=/trunk/; revision=7591
2003-04-28 04:44:54 +00:00
Guy Harris 4915f5e6a2 Note some weirdness seen in some captures, where the direction flag in
the SMB isn't set on replies.

svn path=/trunk/; revision=7588
2003-04-27 23:52:11 +00:00
Guy Harris e875c3330f From Jim McDonough: fix smb transact2 findfirst decoding of info level
2's (including EA sizes, requested by os2 clients).

svn path=/trunk/; revision=7547
2003-04-24 09:04:31 +00:00
Guy Harris d359286841 Add a pointer to an hf_ value for a "reassembled_in" field (which can be
null) to the "fragment_items" structure, and don't pass that value into
"process_reassembled_data()", just have it use the value in the
"fragment_items" structure passed to it.

Make "process_reassembled_data()" capable of handling reassembly done by
"fragment_add_seq_check()", and use it in the ATP and 802.11 dissectors;
give them "reassembled_in" fields.  Make "process_reassembled_data()"
handle only the case of a completed reassembly (fd_head != NULL) so that
we can use it in those dissectors without gunking the code up too much.

svn path=/trunk/; revision=7513
2003-04-20 11:36:16 +00:00
Richard Sharpe 15a665d461 Add some comments about the 0x10 bit in the Flags field of an NTcreate&X.
svn path=/trunk/; revision=7493
2003-04-18 18:07:50 +00:00
Guy Harris 197b9b228b Add a heuristic dissector table to Vines SPP, use it for dissecting SPP
data packets, and register the SMB dissector with it.

Dissect the Control field of SPP packets.

svn path=/trunk/; revision=7480
2003-04-17 20:30:43 +00:00
Guy Harris 8c06187052 Update a URL, and note that the Open Group publications are now
available for free download.

svn path=/trunk/; revision=7476
2003-04-17 07:55:42 +00:00
Guy Harris 9dcf00fe5c Support SMB as one of the protocols that can run over OSI COTP.
svn path=/trunk/; revision=7474
2003-04-17 00:13:26 +00:00
Guy Harris 579ab38577 Add a new routine "dissect_file_data_maybe_dcerpc()" to handle file
read/write data that might, or might not, be DCE RPC information on a
pipe, and use that routine rather than duplicating similar code in
multiple places.

svn path=/trunk/; revision=7455
2003-04-14 17:38:49 +00:00
Guy Harris 82ff4f49a5 Fix up some comments.
svn path=/trunk/; revision=7454
2003-04-14 17:31:42 +00:00
Ronnie Sahlberg 176c885a3d The two extra bytes in the write_andx request is only present if both
the MEssageStart and the Raw bits are set.

svn path=/trunk/; revision=7452
2003-04-14 10:58:21 +00:00