Commit graph

150 commits

Author SHA1 Message Date
Jeff Morriss
343098761f Error out if someone passes the address of a pointer to a *_string to VALS() or RVALS().
Change-Id: I85021b1cba151c16bf0a2d30169cf3dec77780f5
Reviewed-on: https://code.wireshark.org/review/1540
Reviewed-by: Evan Huus <eapache@gmail.com>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-05-07 05:37:40 +00:00
Stig Bjørlykke
bd38b3152d Support out-of-source checkapi
Always call $(top_srcdir)/tools/checkAPIs.pl with -sourcedir=$(srcdir)
from Makefile.am to allow out-of-source 'make checkapi'.

Change-Id: I60d7e0079984a8ededdacf4517a0738486fa7973
Reviewed-on: https://code.wireshark.org/review/1294
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-04-25 04:23:46 +00:00
Guy Harris
80011ec03c Don't se_ allocate strings when mapping addresses to column strings.
This should significantly reduce memory usage, without increasing the
CPU time required to process a capture file in TShark or Wireshark.

As a result, se_address_to_str() is no longer used; eliminate it.

Fixes bug #9949.

Change-Id: I65a112a426c82cc73a957b81384c765c3d14f2c3
Reviewed-on: https://code.wireshark.org/review/1213
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-04-19 14:20:06 +00:00
Hadriel Kaplan
dd002649c3 Add tvb_get and proto_tree_add for string-encoded timestamps
This commit adds tvb_get_string_time and proto_tree_add_time_item routines for
getting nstime fields from the tvb when they are encoded in ASCII string form.

The proto_tree_add_time_item routine is also usable for normal
big/little-endian encoded time_t, and has the advantage of retrieving
the value even if there's no proto tree.

It also exposes the routines to Lua, both so that a Lua script can take
advantage of this, but also so I can write a testsuite to test the functions.

Change-Id: I955da10f68f2680e3da3a5be5ad8fdce7ed6808c
Reviewed-on: https://code.wireshark.org/review/1084
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-04-14 11:47:39 +00:00
Hadriel Kaplan
0a5572ea77 Fix Bug 9951: 'git commit hook isn't calling checkAPIs.pl with arguments for the dissectors'
I recently made a change to packet-rtp.c and inappropriately included
g_error() in it, which the builbots caught during their run of checkAPIs.pl.
But checkAPIs.pl is supposed to catch such things for us before we submit, by
being invoked in the git pre-commit hook.

Apparently though, buildbots call checkAPIs.pl with extra arguments for
different cases... and for packet dissectors it calls it with a '-g abort'
argument, which is how it caught the g_error.

So the "bug" is that the pre-commit hook should invoke checAPIs.pl with that
argument too, for epan/dissectors/packet-*.c files.

Change-Id: Ie8f9dcc55f2248918208dea85a04f67e6bf9829a
Reviewed-on: https://code.wireshark.org/review/953
Reviewed-by: Hadriel Kaplan <hadrielk@yahoo.com>
Reviewed-by: Evan Huus <eapache@gmail.com>
Reviewed-by: Michael Mann <mmann78@netscape.net>
2014-04-14 00:10:20 +00:00
Alexis La Goutte
255eca0c1c Revert Remove check and inverse code to display a error if there is a $Id$
Change-Id: I7061ad312df5079924c927ca95a8fa111c756012
Reviewed-on: https://code.wireshark.org/review/498
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
2014-04-02 08:57:22 +00:00
Hadriel Kaplan
914cbc2f3c Fix checkApis perl script false positive proto_tree_add with ENC_*
In epan/proto.c in function proto_tree_add_split_bits_crumb, the
proto_tree_add_text function is called with one of its arguments
using ENC_BIG_ENDIAN, but it's not an argument for proto_tree_add_text
itself but instead a function being called inside it. checkAPIs.pl
tries to avoid this in check_proto_tree_add_XXX_encoding, by removing
parenthesis arguments, but in this acse there are newlines between
the arguments, causing the regex to not catch them. This commit
fixes the regex.

Change-Id: I70ef79d5436ba2ec04ffdc3d9939c7aa2cdf6a1f
Reviewed-on: https://code.wireshark.org/review/902
Reviewed-by: Hadriel Kaplan <hadrielk@yahoo.com>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-04-01 06:09:31 +00:00
Gerald Combs
641eb36dd5 Fix value_string checks in checkAPIs.pl.
Some strings contain semicolons, which meant g36db2df was terminating
our REs too early. Try terminating them with '}' followed by ';'.

Change-Id: I97f63351ef35c91e3123d9abd47576d47fea4b2b
Reviewed-on: https://code.wireshark.org/review/638
Reviewed-by: Gerald Combs <gerald@wireshark.org>
2014-03-13 17:25:41 +00:00
Gerald Combs
36db2df1c1 Add a check for newlines in value_strings.
Update checkAPIs.pl to look for newlines in value_strings and
enum_val_t's. We now have to perform the check before we strip quoted
strings. Hopefully that won't cause a problem. Rename the check since
we do more than check for NULL termination.

Add modelines.

Fixes bug 9878.

Change-Id: I39dd910db60c7028ea4bdb58e8cfdb239c094748
Reviewed-on: https://code.wireshark.org/review/628
Reviewed-by: Gerald Combs <gerald@wireshark.org>
2014-03-13 15:54:09 +00:00
Guy Harris
8d234a0d8c More tvbuff API deprecation, comment expansion, and documentation updates.
Do with tvb_get_stringz() what was done with tvb_get_string().

Redo the comments for the string get routines to try to give more detail
in a fashion that's a bit less hard to read.

Warn, in comments, of the problems with using
tvb_get_string()/tvb_get_stringz() (i.e., if your strings are non-ASCII,
all bytes with the 8th bit set are going be replaced by the Unicode
REPLACEMENT CHARACTER, and displayed as such).

Warn, in a comment, of the problems with tvb_get_const_stringz() (i.e.,
it gives you raw bytes, rather than guaranteed-to-be-valid UTF-8).

Update documentation and release notes appropriately.

Change-Id: Ibd3efb92a203861f507ce71bc8d04d19d9d38a93
Reviewed-on: https://code.wireshark.org/review/327
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-02-26 22:04:08 +00:00
Evan Huus
22149c5523 TVB API deprecations and cleanup
- rename tvb_length and similar to tvb_captured_length and similar; leave
  #defines in place for backwards-compat, but mark them clearly as deprecated in
  code comments and in checkAPI
- remove tvb_get_string as C code and just leave a #define in place for
  backwards-compat; mark it clearly as deprecated in code comment and checkAPI
- update READMEs and sample dissector for all of the above
- while in the neighbourhood, make checkAPI skip (and warn) for missing files
  instead of bailing on the whole check, so subsequent files still get checked

Change-Id: I32fc437896ca86ca73e9b49d5f50400adf8ec5ad
Reviewed-on: https://code.wireshark.org/review/311
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-02-22 15:02:01 +00:00
Jeff Morriss
d219887b44 Don't complain if files don't have $Id$ in them.
$Id$ is pretty useless in git so don't enforce it in our source code.

Change-Id: Ie8b1b9627aabbca72c9c1dd93a9a76901e6967eb
Reviewed-on: https://code.wireshark.org/review/203
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-02-13 23:23:02 +00:00
Michael Mann
f882b63d97 Some proto_tree_add_xxx functions have a '_' in the function name so make sure they get counted in the proto_tree_add_text percentage.
Makes a few dissectors look a little better.

svn path=/trunk/; revision=54236
2013-12-18 22:10:59 +00:00
Evan Huus
d97c9e2ff4 Implement address_to_str which is like ep_address_to_str and se_address_to_str
except it takes a wmem scope instead. Add the two emem equivalents to checkAPI
as (weakly) deprecated.

svn path=/trunk/; revision=53528
2013-11-23 22:17:27 +00:00
Michael Mann
625fbd5f9a Allow a "more complex" algorithm to finding proto_tree_add_text overuse. Disabled by default, but used when I want to go on an add filterability spree. convert_proto_tree_add_text.pl makes these easier to fix, so why not be pickier about the percentages that dissectors use.
svn path=/trunk/; revision=52392
2013-10-06 02:07:47 +00:00
Jörg Mayer
4e74f3a3c3 Don't print a warning about missing svn id when the argument is not
a file. Warn about the "wrong" filetype and continue

svn path=/trunk/; revision=52105
2013-09-16 20:30:34 +00:00
Evan Huus
464bbb1275 Tweak mq macro and checkAPI to avoid false positives - "garbage"
(like a #define) at the beginning of a line before a value_string no longer
matches so a #define that includes the beginning of a value_string doesn't
confuse the script.

svn path=/trunk/; revision=52089
2013-09-15 22:34:36 +00:00
Jörg Mayer
98baf8ba18 Add help option
List options one by one

svn path=/trunk/; revision=52068
2013-09-15 17:50:18 +00:00
Jörg Mayer
05ba7d3afc http://url is NOT a c++ style comment
svn path=/trunk/; revision=52061
2013-09-15 14:49:16 +00:00
Chris Maynard
50bcbef658 OK, all the Makefiles use -build since r41943, so add that option back for now.
svn path=/trunk/; revision=52016
2013-09-13 18:11:29 +00:00
Chris Maynard
051c082a8c Update the comments to match the current usage.
svn path=/trunk/; revision=52015
2013-09-13 18:00:32 +00:00
Chris Maynard
9c7e47fb2e Rename --build to --check-addtext/--nocheck-addtext for clarity.
Add --check-addtext/--nocheck-addtext, --check-hf/--nocheck-hf and --debug to the usage output and format the usage output a little better.

svn path=/trunk/; revision=52006
2013-09-13 16:52:08 +00:00
Evan Huus
47e241f6c4 Make checkAPI notify (warnings only, for now) about deprecated emem functions.
svn path=/trunk/; revision=51782
2013-09-05 12:50:24 +00:00
Michael Mann
e2cfb1f173 Make checkAPIs.pl a little more discerning when looking for too many proto_tree_add_text()s. I believe the intent was to ignore "small" dissectors that didn't have enough fields to qualify, but the previous logic ignored dissectors that were (almost) all proto_tree_add_text and no proto_tree_add_xxx.
I'm flexible on the definition of "small" (20 "fields"), but I think checkAPIs should flag the "all proto_tree_add_text" dissectors.

svn path=/trunk/; revision=50385
2013-07-05 14:22:35 +00:00
Martin Kaiser
c7dd35dffc flag up a warning if someone includes gcrypt.h instead of wsutil/wsgcrypt.h
svn path=/trunk/; revision=48340
2013-03-16 09:53:19 +00:00
Bill Meier
eeb90f99b7 Tweaks:
- Remove comments from the input string before checking hf[] entries;
- Remove code under '#if 0' before doing API checks.

svn path=/trunk/; revision=47447
2013-02-02 15:13:45 +00:00
Jeff Morriss
02a69849b7 Don't do proto_tree_add_ether(..., tvb_get_ptr(...)), just use proto_tree_add_item().
svn path=/trunk/; revision=46598
2012-12-18 22:29:11 +00:00
Jeff Morriss
a41c5abab1 Add SET_ADDRESS and SET_ADDRESS_HF to the list of APIs we (may--if we uncomment the code) check for being called with tvb_get_ptr().
svn path=/trunk/; revision=46326
2012-12-02 05:05:04 +00:00
Jeff Morriss
5ee917aea7 As requested by Anders on -dev: check enum_val_t's for NULL termination.
Also check that they are all const.

svn path=/trunk/; revision=46294
2012-11-29 20:25:15 +00:00
Jörg Mayer
30b7b74dde Remove #defines that provided backward source compatibility
for deprecated dissector add/remmove/... functions.

svn path=/trunk/; revision=45000
2012-09-19 07:20:49 +00:00
Bill Meier
5e4bff84d3 Use non-capturing grouping when grouping just for alternatives;
Also: improve error message slightly in the case of a missing NULL termination.

svn path=/trunk/; revision=44826
2012-09-10 01:53:23 +00:00
Jeff Morriss
b1a5af9eed string_strings and range_strings must also be {0, NULL} terminated.
Also, remove some tabs.

svn path=/trunk/; revision=44824
2012-09-10 00:48:50 +00:00
Jeff Morriss
1959d4d6bf r43756 said that _snwprintf is banned. Make it so.
svn path=/trunk/; revision=43939
2012-07-23 16:57:16 +00:00
Guy Harris
41be8e4344 Add a local errorCount variable to functions that use it, have them
return it, and use the return value.

svn path=/trunk/; revision=43818
2012-07-19 07:02:00 +00:00
Guy Harris
66ed910844 Yup, that did it. Make use of ENC_ values in non-item proto_tree_add
calls an error.

Fix one case where we weren't counting an error (unregistered ett
variables).

svn path=/trunk/; revision=43817
2012-07-19 04:16:15 +00:00
Jeff Morriss
3d1b5e3474 As suggested by Jakub in https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7429#c4 :
Add checks for calls to proto_tree_add_XXX (where XXX != item and a few other
functions) with an encoding (ENC_*) argument.


Also add a comment to checkAddTextCalls() about why 3 loops are used.

svn path=/trunk/; revision=43563
2012-07-03 21:55:55 +00:00
Jakub Zawadzki
b18e880040 Update FSF address - part II.
svn path=/trunk/; revision=43538
2012-06-28 23:18:38 +00:00
Jeff Morriss
41242190b0 Prohibit strtod() (as per r 43212).
Replace tabs with spaces (for consistency).

svn path=/trunk/; revision=43213
2012-06-11 19:42:05 +00:00
Anders Broman
3ae9cc81c4 Add more depricated functions
svn path=/trunk/; revision=43040
2012-06-03 18:03:51 +00:00
Jeff Morriss
ea9e7c2359 Look only for calls to strlen() within an snprintf() call (not for any file
that has the string "strlen" somewhere after a call to snprintf()).

svn path=/trunk/; revision=42950
2012-05-31 21:19:39 +00:00
Gerald Combs
35c22ed068 If we're feeding the output of strlen to an snprintf-style function
there's a good chance we're doing something wrong.

svn path=/trunk/; revision=42947
2012-05-31 20:12:27 +00:00
Jeff Morriss
7f1ccd46ec Followup to r42823: check for RVALS used without BASE_RANGE_STRING.
Also: identify problematic fields by hf_variable_name instead of name or
abbreviation (the variable name is sure to be unique).

svn path=/trunk/; revision=42826
2012-05-24 14:52:06 +00:00
Jeff Morriss
75c3c92f19 Add a "-build" argument to checkAPIs.pl. Use that argument when building
from makefiles (and thus from the buildbot).

The intention is to be able to tell when a human is running the tool so we
can provide more code-review guidance.

As a starter, enable the "too many proto_tree_add_text() calls" check when
a human is running the tool.

svn path=/trunk/; revision=41943
2012-04-04 20:46:49 +00:00
Bill Meier
3b9d2fcb93 Revise and enable test for hf[] FT_BOOLEAN fields with a non-zero bit mask and with BASE_... in the 'display' field.
svn path=/trunk/; revision=41399
2012-03-07 16:19:24 +00:00
Bill Meier
7504e53a5e Add test for correct usage of hf[] FT_BOOLEAN 'display' field;
(Commented out until all the incorrect usages in Wireshark have been fixed).

svn path=/trunk/; revision=41380
2012-03-06 20:56:51 +00:00
Jeff Morriss
4cd18234d6 Prohibit using anything other than FT_BOOLEANs with true_false_strings.
Prohibit using FT_BOOLEANS with value_strings.

svn path=/trunk/; revision=41364
2012-03-06 02:27:29 +00:00
Bill Meier
d0e9923506 g_fprintf() & g_vfprintf() should not be used....
svn path=/trunk/; revision=41181
2012-02-24 19:02:28 +00:00
Jeff Morriss
e8ff75961f As suggested by Joerg on the -dev list yesterday: count up the number of
proto_tree_add_text() calls and compare that to the number of
proto_tree_add_<something else>() calls and complain if more than 50%
of the calls are add_text()'s.

proto_tree_add_text() calls whose returned proto_item is used are not counted
as hanging a subtree off a text item is an appropriate use for text items.

I chose 50% because even at that level there are many dissectors with "too many"
proto_tree_add_text()'s.

The function to do all of this is commented out for now for the same reason
plus the fact that it's pretty slow.

svn path=/trunk/; revision=40930
2012-02-08 14:15:01 +00:00
Bill Meier
cffa41f052 Update list of deprecated GLib fcns;
Add comment about Wireshark build defines G_DISABLE_DEPRECATED.

svn path=/trunk/; revision=40584
2012-01-19 14:22:46 +00:00
Bill Meier
0908f1c81c Fix a typo; Remove a dup.
svn path=/trunk/; revision=40572
2012-01-18 21:37:55 +00:00