Commit graph

2928 commits

Author SHA1 Message Date
Evan Huus
8f665d9b36 Add a sixteenth element to all BCD digit sets to avoid garbage values when
decoding corrupt bytes. Some of these digit sets could probably be
deduplicated...

svn path=/trunk/; revision=54224
2013-12-18 15:54:32 +00:00
Anders Broman
e6d09c1634 Make local functions static. Include *.h when needed.
svn path=/trunk/; revision=54201
2013-12-17 22:07:32 +00:00
Jakub Zawadzki
4d92f6079b Remove not needed ';'
svn path=/trunk/; revision=54088
2013-12-14 11:12:20 +00:00
Chris Maynard
4b609d4c92 Reject the packet if data is NULL. For now, leave the DISSECTOR_ASSERT's since both get_rose_ctx() and get_asn1_ctx() also check signatures.
svn path=/trunk/; revision=53965
2013-12-12 19:04:38 +00:00
Chris Maynard
a97a3152b0 Reject the packet if data is NULL. Remove _U_ where data is actually used. For now, leave the DISSECTOR_ASSERT's since both get_rose_ctx() and get_asn1_ctx() also check signatures.
(Arguably it's the responsibility of the dissector passing this information to set the signature correctly so if there's an invalid signature, the bug is with the calling dissector and not with the one receiving the invalid signature.)

svn path=/trunk/; revision=53964
2013-12-12 18:10:08 +00:00
Alexis La Goutte
16f85131bd Fix (-W)unused-const-variable error found by Clang
svn path=/trunk/; revision=53935
2013-12-11 13:14:00 +00:00
Anders Broman
25ce6c262e - Forward declaration of register functions.
svn path=/trunk/; revision=53908
2013-12-10 17:41:57 +00:00
Martin Kaiser
ff42551d71 comment out unused functions
fixes https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9538
reported by Yaniv Kaul

svn path=/trunk/; revision=53902
2013-12-10 10:52:29 +00:00
Anders Broman
acf2fed688 - Forward declaration of register functions.
svn path=/trunk/; revision=53901
2013-12-10 06:01:16 +00:00
Chris Maynard
babc735c3a Reject the packet if data is NULL. For now, leave the DISSECTOR_ASSERT(rose_ctx_tmp) since get_rose_ctx() also checks the signature, which might be invalid even if data is not NULL.
svn path=/trunk/; revision=53896
2013-12-09 22:38:42 +00:00
Chris Maynard
79fa0d0a3f Reject the packet if data is NULL without doing anything else.
Note: We *might* want to do _something_ but that _something_ should be well-defined and consistent across all dissectors.  Previously, some dissectors called proto_tree_add_text() to add some error message text to the tree, while others called DISSECTOR_ASSERT().

svn path=/trunk/; revision=53895
2013-12-09 22:23:44 +00:00
Anders Broman
b693f74b89 - Forward declaration of register functions.
svn path=/trunk/; revision=53877
2013-12-09 06:50:09 +00:00
Anders Broman
0d46cdae53 - Forward declaration of register functions.
svn path=/trunk/; revision=53876
2013-12-09 06:20:42 +00:00
Anders Broman
6e2465b94e - Forward declaration of register functions.
svn path=/trunk/; revision=53873
2013-12-08 22:11:18 +00:00
Anders Broman
4124b7aa17 - Forward declaration of register functions.
svn path=/trunk/; revision=53872
2013-12-08 22:02:12 +00:00
Pascal Quantin
93398e794e Use STR_UNICODE display instead of proto_tree_add_unicode_string() in the remaining dissectors
svn path=/trunk/; revision=53867
2013-12-08 20:03:15 +00:00
Anders Broman
5db045212e - Forward declaration of register functions.
svn path=/trunk/; revision=53862
2013-12-08 16:50:07 +00:00
Anders Broman
8983ae005a - Forward declaration of register functions.
svn path=/trunk/; revision=53861
2013-12-08 16:40:49 +00:00
Anders Broman
c9884f573a - Forward declaration of register functions.
svn path=/trunk/; revision=53860
2013-12-08 15:52:29 +00:00
Anders Broman
b630ccec17 - Forward declaration of register functions.
svn path=/trunk/; revision=53859
2013-12-08 15:40:10 +00:00
Anders Broman
eb252d2d34 - Make local functions static.
- Forward declaration of register functions.

svn path=/trunk/; revision=53821
2013-12-07 11:37:58 +00:00
Stig Bjørlykke
470a022c6d Fix for dissecting cdt without having a tree.
svn path=/trunk/; revision=53777
2013-12-04 09:39:19 +00:00
Jakub Zawadzki
65db82872c When including <epan/prefs.h> don't force inclusion of <epan/uat.h>
svn path=/trunk/; revision=53769
2013-12-03 22:16:49 +00:00
Chris Maynard
231e52a9ea Reject the packet if data is NULL without doing anything else.
svn path=/trunk/; revision=53737
2013-12-02 21:52:46 +00:00
Chris Maynard
9b38829b34 Reject the packet if data is NULL without doing anything else.
svn path=/trunk/; revision=53708
2013-12-02 02:31:04 +00:00
Chris Maynard
42a64c3557 If data is NULL, the bug, if any, is not with *this* dissector, but with whichever one failed to pass the data properly.
svn path=/trunk/; revision=53706
2013-12-02 02:07:42 +00:00
Jörg Mayer
40c6d9abcb Copy over rev 53700 to cmake
svn path=/trunk/; revision=53702
2013-12-01 21:56:40 +00:00
Anders Broman
9baa93519c Update to V11.7.1 (2013-09)
svn path=/trunk/; revision=53700
2013-12-01 20:34:21 +00:00
Jakub Zawadzki
82e2675f45 Avoid including <wiretap/wtap.h> in dissectors.
svn path=/trunk/; revision=53655
2013-11-29 20:53:00 +00:00
Jakub Zawadzki
5ac6474c94 Rename some of pint.h macros to match common style (bits number on the end).
pntohs  -> pntoh16
   pntohl  -> pntoh32
   pletohs -> pletoh16
   pletohl -> pletoh32
   phtons  -> phton16
   phtonl  -> phton32


svn path=/trunk/; revision=53652
2013-11-29 18:59:06 +00:00
Anders Broman
861e0334f4 From Vineeth:
Support for Nokias GSM MAP Private Extensions

svn path=/trunk/; revision=53600
2013-11-26 20:29:17 +00:00
Pascal Quantin
402fed459f Fix a shadowed declaration error when compiling with gcc 4.3.2
svn path=/trunk/; revision=53562
2013-11-25 11:23:11 +00:00
Pascal Quantin
17e16ae136 Prettify LTE Positioning Protocol dissection
svn path=/trunk/; revision=53561
2013-11-25 11:16:24 +00:00
Pascal Quantin
db7405bb13 Dissect UE Rx - Tx time difference field
svn path=/trunk/; revision=53557
2013-11-24 23:09:48 +00:00
Evan Huus
1db1b8e2bb Convert ASN1 dissectors from ep_address_to_str to address_to_str. Clean up a bit
of ansi_tcap code while in the neighbourhood.

svn path=/trunk/; revision=53530
2013-11-23 22:37:33 +00:00
Michael Mann
9b7fb8a811 Create the ability to have packet scoped "proto" data. Bug 9470 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9470)
I'm not sold on the name or module the proto_data functions live in, but I believe the function arguments are solid and gives us the most flexibility for the future.  And search/replace of a function name is easy enough to do.

The big driving force for getting this in sooner rather than later is the saved memory on ethernet packets (and IP packets soon), that used to have file_scope() proto data when all it needed was packet_scope() data (technically packet_info->pool scoped), strictly for Decode As.

All dissectors that use p_add_proto_data() only for Decode As functionality have been converted to using packet_scope().  All other dissectors were converted to using file_scope() which was the original scope for "proto" data.

svn path=/trunk/; revision=53520
2013-11-23 02:20:13 +00:00
Alexis La Goutte
14ee1a5a86 Fix unused-const-variable error when build with clang 3.4
svn path=/trunk/; revision=53510
2013-11-22 14:52:04 +00:00
Alexis La Goutte
0d20064172 Fix unused-const-variable error when build with clang 3.4
svn path=/trunk/; revision=53509
2013-11-22 14:51:52 +00:00
Pascal Quantin
ea45be32c5 Add a way to retrieve a PER variable bit string length
svn path=/trunk/; revision=53382
2013-11-17 13:31:32 +00:00
Michael Mann
7221215cdc Add "rtp handle protection" inside srtp_add_address/rtp_add_address/bluetooth_add_address so dissectors calling it don't need to find "rtp" just for the handle check.
svn path=/trunk/; revision=53288
2013-11-12 22:04:03 +00:00
Michael Mann
a661864f48 Add "T.38 handle protection" inside t38_add_address() so dissectors calling it don't need to find "t38" just for the handle check.
svn path=/trunk/; revision=53283
2013-11-12 21:10:20 +00:00
Michael Mann
4945174ae6 Pass "wild_card" directly to dissector instead of using private_data. "h248term" dissector is not in Wireshark source, so third-party will need to update accordingly.
svn path=/trunk/; revision=53241
2013-11-10 21:33:45 +00:00
Michael Mann
ce62a3c5cc Use ASN.1 private data instead of pinfo->private_data to exchange kerberos callback functions.
svn path=/trunk/; revision=53240
2013-11-10 19:58:03 +00:00
Michael Mann
d5d8c3c359 context is not being passed to dissector, not through pinfo->private_data so check data parameter, not pinfo->private_data.
svn path=/trunk/; revision=53236
2013-11-10 17:17:18 +00:00
Jakub Zawadzki
ae59b09443 Add missing includes in order to remove exceptions.h from proto.h (next commit).
svn path=/trunk/; revision=53230
2013-11-10 15:59:37 +00:00
Michael Mann
8081cf1d90 Add data parameter to tcp_dissect_pdus() as well as convert it to using "new" style dissectors.
Now that "bytes consumed" can be determined, should tcp_dissect_pdus() take advantage of that?

Should tcp_dissect_pdus return length (bytes consumed)?  There are many dissectors that just call tcp_dissect_pdus() then return tvb_length(tvb).  Seems like that could all be rolled into one.

svn path=/trunk/; revision=53198
2013-11-09 17:46:28 +00:00
Jakub Zawadzki
c9b2ee3768 include <wsutil/pint.h> only when needed.
svn path=/trunk/; revision=53196
2013-11-09 15:44:29 +00:00
Jakub Zawadzki
1899903f69 Include <epan/to_str.h> only when needed.
svn path=/trunk/; revision=53189
2013-11-09 13:41:10 +00:00
Michael Mann
d62f92b7f1 Make LDAP dissector use ASN.1 private_data instead of pinfo->private_data.
Cleanup a forgotten pinfo->private_data use in the H245 dissector.

svn path=/trunk/; revision=53160
2013-11-08 02:02:43 +00:00
Jörg Mayer
fa3332e8ed Remove extraction of cmake parameters from autotools files.
While it was an interesting exercise it just doesn't
work good enough to stay, i.e. it doesn't automatically
pick up changes but requires rerunning cmake instead.

svn path=/trunk/; revision=53149
2013-11-07 21:40:31 +00:00
Pascal Quantin
696194999e From Vasil Velichkov via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9382 :
Fix dissection of GSM MAPv3 ReportSM_DeliveryStatusRes

svn path=/trunk/; revision=53148
2013-11-07 21:08:15 +00:00
Evan Huus
5f2c75e940 Add missing cast.
svn path=/trunk/; revision=53096
2013-11-05 22:58:50 +00:00
Michael Mann
b6b78d69db In an effort to reduce the use of pinfo->private_data (and some true global variables), I converted the ASN.1 dissectors that use pinfo->private_data to exchange a SESSION_DATA_STRUCTURE to instead only exchange it in the context of ASN.1. This meant converting dissectors to the "new" style to pass the SESSION_DATA_STRUCTURE as well as providing a pointer to it in asn1_ctx_t.private_data. Yes, it's still "private data", but it's not used by all dissectors like pinfo->private data is.
svn path=/trunk/; revision=53090
2013-11-05 18:47:26 +00:00
Michael Mann
149de99d68 Have rose_ctx_t passed into subdissectors instead of using pinfo->private_data.
svn path=/trunk/; revision=53061
2013-11-03 12:57:58 +00:00
Michael Mann
60e3e52a53 Have asn1_ctx_t passed into the "h245.gef.name" and "h245.gef.content" subdissectors instead of using pinfo->private_data.
svn path=/trunk/; revision=53055
2013-11-03 02:45:22 +00:00
Michael Mann
02a8391535 Require dissector_try_string to pass a data parameter to its subdissectors. There weren't that many calls, so might as well modify the function than create a need for dissector_try_string_new.
svn path=/trunk/; revision=53049
2013-11-02 15:52:25 +00:00
Michael Mann
c0fcebb07a Add a data parameter to call_ber_oid_callback to be able to pass data to subdissectors found with dissector_try_string_new.
The intention is to aid in the removal of pinfo->private_data use as well as static global variables in a dissector.  For now, all calls to call_ber_oid_callback have the data parameter set to NULL.

svn path=/trunk/; revision=52994
2013-10-31 00:57:03 +00:00
Michael Mann
bd683d5ee1 Pass T.38 data to subdissectors directly instead of using pinfo->private_data.
svn path=/trunk/; revision=52964
2013-10-29 21:12:50 +00:00
Bill Meier
0ad98563a2 From didier gautheron: remove redundant or use faster col_xxx functions
- when the text parameter is constant col_add_str() and col_set_str() are equivalent but col_set_str() is faster.
- same for  replace col_append_fstr and col_append_str
- remove col_clear() when it's redundant:
    + before a col_set/col_add if the dissector can't throw an exception.
- replace col_append() after a col_clear() with faster col_add... or col_set

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


svn path=/trunk/; revision=52948
2013-10-29 14:09:20 +00:00
Martin Mathieson
66d64c686e Pass security command details (integrity and ciphering algorithms) to PDCP (which doesn't yet do much with them)
svn path=/trunk/; revision=52946
2013-10-29 13:49:14 +00:00
Martin Kaiser
c89b9a2cdc initialize tree variables
svn path=/trunk/; revision=52920
2013-10-28 16:59:57 +00:00
Michael Mann
3b91b9586f Pass tcap_private into the dissectors that need it rather than use private_data. Not sure if value_ptr is the "proper" place to pass tcap_private "internally" within the TCAP dissector, but it gets away from (potential) private_data (ab)use.
svn path=/trunk/; revision=52916
2013-10-28 13:36:49 +00:00
Michael Mann
09bd9ad788 Have ANSI TCAP dissector pass data through subdissector parameter instead of using struct _packet_info.
svn path=/trunk/; revision=52885
2013-10-27 02:00:18 +00:00
Jeff Morriss
0690c4f490 More SVN properties cleanup.
svn path=/trunk/; revision=52884
2013-10-27 01:11:15 +00:00
Evan Huus
3342e3bc89 Convert some emem to wmem. It took some manual flow analysis, but they are only
used during actual packet dissection.

svn path=/trunk/; revision=52870
2013-10-26 16:04:21 +00:00
Bill Meier
6dd42b581a Fix some [-Wunused-const-variable] warnings (using '#if 0')
svn path=/trunk/; revision=52862
2013-10-26 02:09:14 +00:00
Evan Huus
95f484a91e Add a very small hack to make the UAT update callback error string freeable, and
convert all existing UAT update callbacks to use glib memory instead of
ephemeral memory for that string.

UAT code paths are entirely distinct from packet dissection, so using ephemeral
memory was the wrong choice, because there was no guarantees about when it would
be freed.

The move away from emem still needs to be propogated deeper into the UAT code
itself at some point.

Net effect: remove another bunch of emem calls from dissectors, where replacing
with wmem would have caused assertions.

svn path=/trunk/; revision=52854
2013-10-25 22:14:25 +00:00
Pascal Quantin
b552143a5c Put PDU dissection in protocol tree
svn path=/trunk/; revision=52724
2013-10-20 21:05:37 +00:00
Pascal Quantin
7f3d07b9fd From e.yimjia via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9289 :
Add dissection of OMA-ILP

svn path=/trunk/; revision=52721
2013-10-20 18:43:00 +00:00
Pascal Quantin
d269d19f99 Fix a typo
svn path=/trunk/; revision=52719
2013-10-20 18:06:23 +00:00
Tomas Kukosa
744f47107e H.225.0: fix handling of compound parameters in Generic Extensible Framework (H.460.22 did not work well)
svn path=/trunk/; revision=52659
2013-10-17 11:24:43 +00:00
Pascal Quantin
938206442c Upgrade RRLP dissector to V11.0.0
svn path=/trunk/; revision=52640
2013-10-16 03:06:46 +00:00
Bill Meier
f6e09faa2d From Ed Beroset: add modelines and fix irregular indenting;
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9273

This patch adds modelines and cleans up the irregular indentation of
this dissector's code.  The only other change was in
asn1/c1222/packet-c1222-template.c to consolidate an #ifdef that had a
redundant #endif (line 812) and subsequent reopening #ifdef (line
824).  The only thing between them was comments, so the span of the
original #ifdef (line 644) was simply extended by eliminating those
two lines.

The purpose for this patch is to make the file easier to edit and
understand in advance of more substantive patches later.  This patch
is intended to be easy to review by having only non-substantive
changes.


svn path=/trunk/; revision=52636
2013-10-16 00:57:28 +00:00
Graham Bloice
9c4ee86784 Add CMake properties to targets so that they are logically organised when using a Visual Studio solution.
Add CMake properties to group the source files in epan into logical blocks when using a Visual Studio solution.

svn path=/trunk/; revision=52580
2013-10-13 09:21:55 +00:00
Jeff Morriss
545455db1c Fix compilation when we don't HAVE_LIBGCRYPT
svn path=/trunk/; revision=52527
2013-10-11 00:42:02 +00:00
Evan Huus
f29544f9df Add a call to tvb_ensure_bytes_exist before we allocate memory based on our
offset+size, prevents attempts to allocate outrageous memory, fixing
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9260

svn path=/trunk/; revision=52503
2013-10-10 17:44:55 +00:00
Evan Huus
a50dee3286 From Ed Beroset via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9246
Fix memory leaks and bad memory accesses in c1222 dissector.

From me: use realloc in a handoff function since it may get called multiple
times, and we only need the latest.

svn path=/trunk/; revision=52497
2013-10-10 16:18:49 +00:00
Martin Kaiser
8a9e9de7bf mpeg pes private data is 16 bytes long, see iso 13818-1
svn path=/trunk/; revision=52447
2013-10-08 11:23:22 +00:00
Michael Mann
94f0e1fe21 Fully support relative AP-titles in C12.22. Bug 9196 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9196)
From Ed Beroset

svn path=/trunk/; revision=52394
2013-10-06 02:42:14 +00:00
Pascal Quantin
76e8ff1d8d Replace the 3 dissector tables (with a single entry in each) by a direct call to the GSM SMS dissector
svn path=/trunk/; revision=52336
2013-10-02 18:04:06 +00:00
Anders Broman
408ba7bade From beroset@mindspring.com:
c1222 dissector has wrong tag value for BER-encoding of calling_AE_qualifier

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

svn path=/trunk/; revision=52225
2013-09-26 21:15:44 +00:00
Pascal Quantin
019e64f58d Upgrade RRC dissector to v11.7.0
svn path=/trunk/; revision=52202
2013-09-24 17:56:17 +00:00
Pascal Quantin
d74564d6cf Ensure to release an existing DRX configuration when receiving a RRC Connection Setup message
svn path=/trunk/; revision=52193
2013-09-23 21:21:58 +00:00
Pascal Quantin
15ba18d1df Upgrade LPPa dissector to v11.3.0
svn path=/trunk/; revision=52192
2013-09-23 20:20:36 +00:00
Pascal Quantin
102c452bcb More emem -> wmem conversion:
- tvb_get_g_stringz()/tvb_get_ephemeral_stringz()/tvb_get_seasonal_stringz() -> tvb_get_stringz()
- tvb_get_g_stringz_enc()/tvb_get_ephemeral_stringz_enc() -> tvb_get_stringz_enc()
- tvb_get_ephemeral_unicode_stringz() -> tvb_get_unicode_stringz()
- tvb_bcd_dig_to_ep_str() -> tvb_bcd_dig_to_wmem_packet_str()
- update docs accordingly

svn path=/trunk/; revision=52180
2013-09-22 20:04:35 +00:00
Pascal Quantin
a0c53ffaa1 emem -> wmem conversion:
- ep_tvb_get_bits() -> wmem_packet_tvb_get_bits()
- tvb_g_memdup()/ep_tvb_memdup() -> tvb_memdup()
- tvb_fake_unicode()/tvb_get_ephemeral_faked_unicode() -> tvb_get_faked_unicode()
- tvb_get_g_string()/tvb_get_ephemeral_string()/tvb_get_seasonal_string() -> tvb_get_string()
- tvb_get_g_unicode_string()/tvb_get_ephemeral_unicode_string() -> tvb_get_unicode_string()
- tvb_get_ephemeral_string_enc() -> tvb_get_string_enc()
- update docs accordingly

svn path=/trunk/; revision=52172
2013-09-22 15:50:55 +00:00
Evan Huus
6df83e8078 Add _g_ to the names of functions that allocate glib memory. This is a bit more
explicit, and frees up the "generic" names (like tvb_memdup) for new signatures
that take the appropriate wmem pool.

Majority of the conversion done with sed.

svn path=/trunk/; revision=52164
2013-09-21 17:04:41 +00:00
Anders Broman
95c5f81c83 DCH-ID can be 255
svn path=/trunk/; revision=52154
2013-09-20 14:19:31 +00:00
Chris Maynard
ab7d8cc87d Fix a couple of EXPORT_DEPENDS
svn path=/trunk/; revision=52135
2013-09-18 03:58:07 +00:00
Jörg Mayer
6883f691c7 Add the dependeny handling for windows builds as well
svn path=/trunk/; revision=52134
2013-09-18 03:31:03 +00:00
Chris Maynard
ae8824d555 Missed 1 character replacement as part of r52132.
svn path=/trunk/; revision=52133
2013-09-18 02:58:14 +00:00
Chris Maynard
b9ee9fa694 Remove all non-ASCII characters from all .asn files. I didn't see the harm in replacing them all as opposed to only those not copied verbatim from other sources.
svn path=/trunk/; revision=52132
2013-09-18 02:48:29 +00:00
Jörg Mayer
af15a51a6b Fix remaining dependencides for -exp.cnf files.
svn path=/trunk/; revision=52129
2013-09-17 20:45:00 +00:00
Jörg Mayer
de20bbf0ac More dependeny updates for asn1 -exp.cnf files.
Only three remaining: p7, p22, x509ce - thanks to Chris Maynard for the list.

svn path=/trunk/; revision=52127
2013-09-17 19:43:37 +00:00
Jörg Mayer
72f8ca4895 One of the wmem patches only updated the generated packet-snmp.c
but not the source. Fix that.

svn path=/trunk/; revision=52123
2013-09-17 18:54:18 +00:00
Jörg Mayer
fb834104e5 When building packet-dap.c on an empty build tree, packet-dap.c would
be incorrect on the first pass and only be correct when remade.
The reason was that disp-exp.cnf was created incorrectly on first pass.
disp-exp.cnf required dop-exp.cnf to build correctly, so add a mechanism
to add dependencies for export files.

Note: Only the cmake change has been tested, the autofoo stuff requires
  testing.

svn path=/trunk/; revision=52120
2013-09-17 18:02:25 +00:00
Chris Maynard
a2e86de160 Fix dependency problems (continuation of r52110 and r52112).
svn path=/trunk/; revision=52118
2013-09-17 14:45:52 +00:00
Jörg Mayer
af96c7bb45 Fix a difference to Makefile.common
svn path=/trunk/; revision=52117
2013-09-17 05:53:02 +00:00
Jörg Mayer
686dd9b061 Copy over rev 52110 to cmake
svn path=/trunk/; revision=52112
2013-09-16 21:45:46 +00:00
Chris Maynard
e14b587293 Fix dependency problem reported by Joerg Mayer on wireshark-dev.
Ref: http://www.wireshark.org/lists/wireshark-dev/201309/msg00151.html

svn path=/trunk/; revision=52110
2013-09-16 21:35:27 +00:00