aboutsummaryrefslogtreecommitdiffstats
path: root/epan/wslua
AgeCommit message (Collapse)AuthorFilesLines
2017-08-27Lua: fix crash on invalid Dissector.list("food") invocationPeter Wu3-3/+3
The Dissector.list, Listener.list and Field.list functions do not accept a parameter. Passing one however results in a crash because the first element is not the expected table, but the first function parameter. Change-Id: I8483d0aa20716045472f30f5b41a449bed549b05 Reviewed-on: https://code.wireshark.org/review/23209 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl>
2017-08-08Check for errors running the Lua scripts.Guy Harris1-5/+5
Also, fix error messages reported for lua_load() to speak of precompilation, not execution (the script isn't *executed* until lua_pcall() is called). Change-Id: I7ac9ee6e5df7612f9af141e51958fbfad38a4083 Reviewed-on: https://code.wireshark.org/review/23023 Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-08-05Lua: Check for PseudoHeader.noneStig Bjørlykke1-1/+3
Don't dereference pointer when using PseudoHeader.none. Bug: 13944 Change-Id: I4e509269ac4983531912f3f9b2cc6b7cf00fbeae Reviewed-on: https://code.wireshark.org/review/22945 Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org> Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
2017-08-05Lua: Fix error message in Dumper:dump()Stig Bjørlykke1-1/+1
Change-Id: I9cdf8ecaf5129a30091b9b4d109f70cfdd7fca1b Reviewed-on: https://code.wireshark.org/review/22946 Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
2017-07-17ERF_TYPE_META write and comment supportAnthony Coddington1-2/+4
Support per-packet comments in ERF_TYPE_META through a new Anchor ID extension header with per-Host unique 48-bit Anchor ID which links an ERF_TYPE_META record with a packet record. There may be more than one Anchor ID associated with a packet, where they are grouped by Host ID extension header in the extension header list. Like other ERF_TYPE_META existing comments should not be overwritten and instead a new record generated. See erf_write_anchor_meta_update_phdr() for detailed comments on the extension header stack required. As Wireshark only supports one comment currently, use the one one with the latest metadata generation time (gen_time). Do this for capture comment too. Write various wtap metadata in periodic per-second ERF_TYPE_META records if non-WTAP_ENCAP_ERF or we have an updated capture comment. Refactor erf_dump to create fake ERF header first then follow common pseudoheadr and payload write code rather than two separate code paths. Support an ERF_HOST_ID environment variable to define Wireshark's Host ID when writing. Defaults to 0 for now. ERF dissector updates to support Anchor ID extension header with basic frame linking. Update ERF_TYPE_META naming and descriptions to official name (Provenance) Core changes: Add has_comment_changed to wtap_pkthdr, TRUE when a packet opt_comment has unsaved changes by the user. Add needs_reload to wtap_dumper which forces a full reload of the file on save, otherwise wireshark gets confused by additional packets being written. Change-Id: I0bb04411548c7bcd2d6ed82af689fbeed104546c Ping-Bug: 12303 Reviewed-on: https://code.wireshark.org/review/21873 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Stephen Donnelly <stephen.donnelly@endace.com> Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-06-21Lua: Add "tonumber" method to NSTimeSilvio Gissi2-3/+15
Absolute and Relative time fields could not be converted to seconds without converting to string and parsing to number. Fixed conversion in generated code that was subject to precision loss Usage: f=Field.new("frame.delta_time") delta=f().value:tonumber() Change-Id: I6ef91c6238a6c2ed9adf6cae03f8913f0a09332e Reviewed-on: https://code.wireshark.org/review/22316 Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-06-21cmake: allow building from a UNC source directoryMartin Kaiser1-2/+0
Make two minor adjustments to allow building on Windows when the source directory is specified in UNC notation (\\server\volume\directory) instead of mapping such a directory to a drive letter. Cmake's add_custom_command() calls "cd <work_dir>" if a working directory is define as part of the rule. However, cd \\server\volume\directory is not allowed. Modify the two occassions where the working directory is derived from CMAKE_SOURCE_DIR. For copying some install files, we can get away with using the absolute path for each source file to be copied. The perl script that creates the tap listing for lua does not depend on a working directory at all. We can simply remove the WORKING_DIRECTORY parameter. Change-Id: Iac8e0addc44650692c1263fdca11f68315f50c63 Reviewed-on: https://code.wireshark.org/review/22236 Petri-Dish: Martin Kaiser <wireshark@kaiser.cx> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl>
2017-06-05Allow bigger snapshot lengths for D-Bus captures.Guy Harris1-1/+1
Use WTAP_MAX_PACKET_SIZE_STANDARD, set to 256KB, for everything except for D-Bus captures. Use WTAP_MAX_PACKET_SIZE_DBUS, set to 128MB, for them, because that's the largest possible D-Bus message size. See https://bugs.freedesktop.org/show_bug.cgi?id=100220 for an example of the problems caused by limiting the snapshot length to 256KB for D-Bus. Have a snapshot length of 0 in a capture_file structure mean "there is no snapshot length for the file"; we don't need the has_snap field in that case, a value of 0 mean "no, we don't have a snapshot length". In dumpcap, start out with a pipe buffer size of 2KB, and grow it as necessary. When checking for a too-big packet from a pipe, check against the appropriate maximum - 128MB for DLT_DBUS, 256KB for everything else. Change-Id: Ib2ce7a0cf37b971fbc0318024fd011e18add8b20 Reviewed-on: https://code.wireshark.org/review/21952 Petri-Dish: Guy Harris <guy@alum.mit.edu> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-05New Lua function TreeItem:referenced(ProtoField | Dissector).Rado Radoulov1-0/+32
This function returns TRUE/FALSE depending whether the specified ProtoField/Dissector needs to be dissected. By using this function in conjunction with the TreeItem.visible attribute, Lua dissectors can be significantly sped up by making less C interop calls which are relatively slow in terms of dissection especially when using sub-protocols where the dissection of an entire protocol can be skipped. Added tests for TreeItem:referenced to protofield.lua Change-Id: I44feacb91a2a5b0e3c28c0ccd8d6b04cccd67261 Reviewed-on: https://code.wireshark.org/review/21387 Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl>
2017-04-18Eliminate an unneded member of a wtap_dumper.Guy Harris1-2/+2
The only place the time stamp precision is used is in the libpcap code, where it determines whether to write out microsecond-precision or nanosecond-precision time stamps; we can determine that by looking at the type/subtype field, which is also part of that structure, so do that. We weren't setting it consistently - we were only setting it in libpcap and a few other capture file writers, and not in other capture file writers - and none of the writers other than libpcap used it. Change-Id: If53779cf4823ca936b8bf3e8a7dbcfea5850e652 Reviewed-on: https://code.wireshark.org/review/21171 Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-04-12Add an API to let a postdissector specify fields whose values it needs.Guy Harris1-0/+10
Currently, this is only used to determine whether a protocol tree needs to be built on the first pass or not - if there are postdissectors that need fields, it does - but eventually we should be able to use it to prime the dissection to deliver those fields in cases where we don't need the *entire* protocol tree (rather than using a hack such as cooking up a fake tap with a fake filter to do that). Update MATE and TRANSUM to use it. Clean up code to check whether we need a protocol tree, and add comments before that code indicating, in each case, what the criteria are. The array of postdissectors includes a length, so we don't need to separately keep track of the number of postdissectors. Clean up indentation while we're at it. Change-Id: I71d4025848206d144bc54cc82941089a50e80ab7 Reviewed-on: https://code.wireshark.org/review/21029 Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-04-08Clean up handling of enabled/disabled protocols/heuristic dissectors.Guy Harris1-1/+1
Add a "report a warning message" routine to the "report_err" code in libwsutil, and rename files and routines appropriately, as they don't only handle errors any more. Have a routine read_enabled_and_disabled_protos() that reads all the files that enable or disable protocols or heuristic dissectors, enables and disables them based on the contents of those files, and reports errors itself (as warnings) using the new "report a warning message" routine. Fix that error reporting to report separately on the disabled protocols, enabled protocols, and heuristic dissectors files. Have a routine to set up the enabled and disabled protocols and heuristic dissectors from the command-line arguments, so it's done the same way in all programs. If we try to enable or disable an unknown heuristic dissector via a command-line argument, report an error. Update a bunch of comments. Update the name of disabled_protos_cleanup(), as it cleans up information for disabled *and* enabled protocols and for heuristic dissectors. Support the command-line flags to enable and disable protocols and heuristic dissectors in tfshark. Change-Id: I9b8bd29947cccdf6dc34a0540b5509ef941391df Reviewed-on: https://code.wireshark.org/review/20966 Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-03-27wslua: update a commentPascal Quantin1-1/+1
Change-Id: I8ccb3f00ab3ed2eea770acb7541b64ec07749d6b Reviewed-on: https://code.wireshark.org/review/20745 Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
2017-03-15Lua: Add absolute time base valuesStig Bjørlykke2-5/+33
Add ABSOLUTE_TIME_* defines to the base table in init.lua for use in ProtoField.absolute_time. Change-Id: I5c99eafdac97655d71fd4f3374294cd587afaf0a Reviewed-on: https://code.wireshark.org/review/20543 Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl>
2017-03-15Lua: Merge sep and str tables into baseStig Bjørlykke3-45/+22
Also add documentation strings to the base values. Change-Id: I00ac8f154fdd0382106ed27d740e16956520be97 Reviewed-on: https://code.wireshark.org/review/20554 Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
2017-03-14Lua: Check for no table in ProtoField unit stringStig Bjørlykke1-18/+33
When using base.UNIT_STRING in a ProtoField the table must be given. Change-Id: Ie4beb93b5597a97a99939ef2c60a1ee7ece328f2 Reviewed-on: https://code.wireshark.org/review/20542 Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
2017-03-14Lua: Improve base checking for signed integerStig Bjørlykke1-9/+9
Check base value for signed integer before unsigned to avoid a case where the valid bases for a unsigned integer is presented in a error message when a signed type is used. Change-Id: Idfb87597779652e32adceacad220d748afda5e85 Reviewed-on: https://code.wireshark.org/review/20541 Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl>
2017-03-14Lua: Layout cleanup in init.luaStig Bjørlykke2-20/+20
Remove double start-of-comments and some leading spaces. Change-Id: I1c5ba49990076cc2d32da2d0a3bb0f54ec31e823 Reviewed-on: https://code.wireshark.org/review/20540 Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl>
2017-03-13Lua: Base must be base.DEC or base.UNIT_STRING for signed integerStig Bjørlykke1-11/+11
Reject ProtoField signed integer types with base other than base.DEC and base.UNIT_STRING. Update documentation for this. Bug: 13484 Change-Id: I55a636c89704e96a598f1f185faabd8ad13d96f1 Reviewed-on: https://code.wireshark.org/review/20533 Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
2017-03-07lua: improve FileHandler:[seek_]read behavior and documentationPeter Wu1-12/+37
WSLUA documents FileHandler:read as returning a boolean or integer. Ignore strings, do not treat strings as number even if it is possible. Remove undocumented feature of FileHandler:seek_read that used returned strings as the frame data. Use FrameInfo:read_data instead. This avoids interpreting numbers as data which caused surprising behavior when combining with FileHandler:read. Documentation has been improved to document the return value, this is consistent with the documentation in the WSLUA tests. Change-Id: I31f74ec33ff0e43c90d83c1904af43801886cfa1 Reviewed-on: https://code.wireshark.org/review/19366 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl> Reviewed-by: Anders Broman <a.broman58@gmail.com>
2017-02-27wslua: fix documentation of Struct.fromhexPeter Wu1-1/+1
The default separator is really an empty string, not a single space. This has been wrongly documented since the beginning. Change-Id: I5598daec1486ce17cfeeaf5697f9759172db9cf5 Fixes: v1.11.3-rc1-1760-g860747e1e7 ("Adds some Lua helper functions: some commonly used functions, and to help troubleshooting Lua scripts") Reviewed-on: https://code.wireshark.org/review/20296 Reviewed-by: Michael Mann <mmann78@netscape.net>
2017-01-10Rename tvb_new_subset() to tvb_new_subset_length_caplen().Guy Harris1-1/+1
This emphasizes that there is no such thing as *the* routine to construct a subset tvbuff; you need to choose one of tvb_new_subset_remaining() (if you want a new tvbuff that contains everything past a certain point in an existing tvbuff), tvb_new_subset_length() (if you want a subset that contains everything past a certain point, for some number of bytes, in an existing tvbuff), and tvb_new_subset_length_caplen() (for all other cases). Many of the calls to tvb_new_subset_length_caplen() should really be calling one of the other routines; that's the next step. (This also makes it easier to find the calls that need fixing.) Change-Id: Ieb3d676d8cda535451c119487d7cd3b559221f2b Reviewed-on: https://code.wireshark.org/review/19597 Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-01-07Convert range API to always use wmem memory.Michael Mann2-10/+10
This is mostly to address memory leaks in range preferences (the biggest user of range functionality) on shutdown. Now range preferences must use epan scoped memory when referencing internal preference structures to keep consistency. Change-Id: Idc644f59b5b42fa1d46891542b53ff13ea754157 Reviewed-on: https://code.wireshark.org/review/19387 Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl> Reviewed-by: Michael Mann <mmann78@netscape.net>
2016-12-21Lua: Fix some typos.Stig Bjørlykke1-8/+8
Change-Id: I4d1cf878245b03665207a500fb7593be1435c3d3 Reviewed-on: https://code.wireshark.org/review/19371 Reviewed-by: Peter Wu <peter@lekensteyn.nl> Petri-Dish: Peter Wu <peter@lekensteyn.nl> Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
2016-12-20Lua: Add string types and byte seperators support.Stig Bjørlykke3-32/+140
Add handling of STR_ASCII and STR_UNICODE as base types for string and stringz. Add handling of SEP_DOT, SEP_DASH, SEP_COLON and SEP_SPACE for bytes and uint_bytes. Add SEP_NONE for completeness. Change-Id: Ida46c215fee7ec7132ec91ab5dd6cb3de4628920 Reviewed-on: https://code.wireshark.org/review/19337 Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl> Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
2016-12-20cmake,wslua,wsutil: load files from run/ instead of source treePeter Wu3-19/+23
Fixes Lua on macOS, tested with an out-of-tree build: WS_BIN_PATH=$PWD/run ../wireshark/test/test.sh -s wslua Previously programs that were ran from the build directory would load data files (radius/, diameter/, init.lua) from the source directory. Then in the case of Lua, files were loaded from the program directory ($BUILDDIR/run/init.lua on Linux) or source directory (sSOURCEDIR/epan/wslua/console.lua). On macOS, this does not work for Lua since files are installed into $BUILDDIR/run/Wireshark.app/Contents/Resources/share/wireshark/init.lua instead. Since CMake always copies data files (radius, console.lua, etc.) into the build directory, make get_datafile_dir() return this "run" directory instead. Change-Id: If97d2f5686271caf9ad4d4e4fc58e902dc592a98 Reviewed-on: https://code.wireshark.org/review/19330 Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org> Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Graham Bloice <graham.bloice@trihedral.com> Reviewed-by: Peter Wu <peter@lekensteyn.nl>
2016-12-20Lua: Remove an obsolete comment.Stig Bjørlykke1-1/+0
Change-Id: I6a946eb44f4a574d6d9add3604b2dac924c33a9f Reviewed-on: https://code.wireshark.org/review/19361 Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
2016-12-20Lua: Add unit names support.Stig Bjørlykke2-43/+194
Add support for using unit names in ProtoField integer types by using base.UNIT_STRING. Add unit name table argument in ProtoField.float() and ProtoField.double() (and made backward compatibility). The use of base.UNIT_STRING is not really the best API for adding unit names in Lua, but is the simples solution without adding new arguments to ProtoField. Change-Id: Ib5d064480cffd970a41db1764440642f6c593bb2 Reviewed-on: https://code.wireshark.org/review/19313 Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
2016-12-19Lua: Include all BASE_PT_* to base table.Stig Bjørlykke1-1/+1
Also added a note above field_display_e enum to indicate that this values are parsed in make-init-lua.pl to build init.lua. Change-Id: Ibd125684f9a68e1b8116fae0ccbc72147825d75d Reviewed-on: https://code.wireshark.org/review/19336 Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
2016-12-18Lua: Fix some memory leaks in error paths.Stig Bjørlykke1-34/+60
Because luaL_argerror() does a longjmp all memory free must be done before calling this. Also rewrote true_false_string_from_table() to be a bit simpler and to give argument error when too many strings in the table. Change-Id: Ied0fa468f1274155c746fe2e086dacf1a8582b08 Reviewed-on: https://code.wireshark.org/review/19325 Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
2016-12-02Include config.h first, for large-file-related #defines.Guy Harris1-2/+1
Change-Id: Id71326bc89e1461b100df99b618a1c49256b93af Reviewed-on: https://code.wireshark.org/review/19037 Reviewed-by: Guy Harris <guy@alum.mit.edu>
2016-11-29Handle FT_CHAR, and report unsupported types as such.Guy Harris1-4/+12
FT_CHAR is straightforward to support. Split the list of "invalid" types into a list of "unsupported" types and a short list of "invalid" types, containing FT_PCRE (which isn't a valid type for a field) and "everything else". Add FT_IEEE_11073_SFLOAT and FT_IEEE_11073_FLOAT to the "unsupported" list. Flag the whole unsupported list as just "not handled yet". Change-Id: I62d2d7eead53377e4e601594a035b4395fdbeead Reviewed-on: https://code.wireshark.org/review/18979 Reviewed-by: Guy Harris <guy@alum.mit.edu>
2016-11-22lua: Allow FT_ETHER protofields to be inserted in TreeItems.Franklin "Snaipe" Mathieu1-0/+10
Change-Id: If1daef88dce166ec92f00a8c6e71bcb220d25e0c Signed-off-by: Franklin "Snaipe" Mathieu <snaipe@diacritic.io> Reviewed-on: https://code.wireshark.org/review/18917 Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
2016-11-13lua: Allow proto:register_heuristic to be used on multiple list namesFranklin "Snaipe" Mathieu1-2/+11
In the C API, one can register a heuristic for the same protocol on different lists by specifying another unique short_name. This is impossible in the lua API, as the protocol name is used as the short name itself. This change fixes that by creating an unique shortname composed of the protocol name and the target list name. Change-Id: I2c30ce6e4f7a3b38879180c64cf8564f779163b4 Signed-off-by: Franklin "Snaipe" Mathieu <snaipe@diacritic.io> Reviewed-on: https://code.wireshark.org/review/18711 Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl>
2016-11-06lua: Added new integer sizes in TvbRangeFranklin "Snaipe" Mathieu1-6/+36
* Added support for 3-byte integers in :int() and :le_int() * Added support for 5, 6, and 7-byte integers in :int64() and :le_int64() Change-Id: If9ab4ea806191bc63effe45a081b9c65693c2367 Signed-off-by: Franklin "Snaipe" Mathieu <snaipe@diacritic.io> Reviewed-on: https://code.wireshark.org/review/18672 Reviewed-by: Peter Wu <peter@lekensteyn.nl> Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
2016-10-26wslua_pref(.c): fix spelling typo found by lintianAlexis La Goutte1-2/+2
Change-Id: Ie371e144a9b385d893ead67c03688841039b8319 Reviewed-on: https://code.wireshark.org/review/18484 Reviewed-by: Peter Wu <peter@lekensteyn.nl>
2016-10-25lua: Added support for FT_IPv6 fieldsSnaipe3-10/+61
* Implement Tvb:ipv6() * Handle FT_IPv6 protofields during insertion in the lua tree * Implement Address.ipv6(hostname) Change-Id: I585c392681b3aef02ed8ee956f74051d77fb28d4 Signed-off-by: Franklin "Snaipe" Mathieu <snaipe@diacritic.io> Reviewed-on: https://code.wireshark.org/review/18442 Reviewed-by: Peter Wu <peter@lekensteyn.nl> Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
2016-10-18wslua: prepare for split class/instance (meta)methodsPeter Wu3-248/+329
Previously the metatables for classes were the same for the class and its instances. This results in issues like calling __gc on the class table on exit. Make it possible to declare separate class methods (functions) and instance methods. Observe that all attributes apply to the instances only, so make these just available on the instance. The attribute/methods lookup method (via __index/__newindex) have been rewritten to use upvalues, removing the technical need for the properties __getters/__setters/__methods. The "lua globals" test still checks for these, but it could be removed in the future. To fix bug 12968, the __gc method is removed from the class method. Future patches should remove the WSLUA_REGISTER_CLASS, WSLUA_REGISTER_META and WSLUA_REGISTER_ATTRIBUTES macros completely and create split class functions/methods (such that __call for an instance cannot accidentally be invoked on the class). Removed duplicate "fragmented" property from Pinfo (which triggered an error) and replaced exit() by g_error() for debugger friendliness. Remove lua_shiftstring since checkstring always returns non-NULL. Bug: 12968 Change-Id: I57f8a93d08bb84c79b0e94cf2c82d8402fc16646 Reviewed-on: https://code.wireshark.org/review/18026 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Balint Reczey <balint@balintreczey.hu>
2016-10-18wslua: add support for negative indicesPeter Wu1-11/+21
Internal change, this allows use of negative indices for lua_rawgetfield/lua_rawsetfield convenience functions and is closer to lua_getfield/lua_setfield semantics in terms of indices. Add lua_absindex for compatibility with Lua 5.1 (do not bother exporting it yet since it is only used in this file, also do not rename it since it is the same functionality with no Wireshark-specific changes.) Change-Id: I322954ef461164ec514ed9f034ae2691775e67da Reviewed-on: https://code.wireshark.org/review/18025 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
2016-10-18wslua: fix errors in documentation, add notational conventionsPeter Wu3-9/+4
Improve example with better formatting, clarification comments and more common variable names. Extend make-wsluarm.pl to support arguments containing underscores. Fixes the description of dissect_tcp_pdus. Change TvbRange.tvb(tvb) into tvbrange:tvb() and ByteArray.tvb(name) into bytearray:tvb(name), these are really instance methods. Change-Id: I1e20ef46195dc6c06f9ac790d3432db283d21a5e Reviewed-on: https://code.wireshark.org/review/18226 Reviewed-by: Anders Broman <a.broman58@gmail.com>
2016-10-18wslua: Do not crash on the root tree itemPeter Wu1-2/+3
ti->item is NULL for the root item, prevent a NULL-deref by Lua script. Bug: 13017 Change-Id: I5e7f71d014a01bab615288df76509b3ef97b1bf6 Reviewed-on: https://code.wireshark.org/review/18247 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
2016-10-14Lua: allow creating TVBs after calling other (Lua) dissectors.Jeff Morriss1-6/+12
Don't set `lua_tvb` (or any of the other global variables) to NULL after a Lua dissector is called: it's possible that the caller is also a Lua dissector which may want/need that (global) variable to still be set (to the value it had before the sub-dissector was called). This fixes the problem reported in: https://ask.wireshark.org/questions/56110/lua-error-tvbs-can-only-be-created-and-used-in-dissectors Making these variables not be a globals (as suggested at the top of init_wslua.c) might be a better solution--for another day. Change-Id: I14fb8ec35b62abeda3f3471a323b88c80537a06e Reviewed-on: https://code.wireshark.org/review/18095 Petri-Dish: Jeff Morriss <jeff.morriss.ws@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl> Tested-by: Peter Wu <peter@lekensteyn.nl>
2016-10-02wslua: fix wslua file test failurePeter Wu1-0/+10
Lua 5.2.4 built with -DLUA_USE_APICHECK detected a stack issue: tshark: lapi.c:175: lua_settop: Assertion `(-(idx+1) <= (L->top - (func + 1))) && "invalid new top"' failed. Function File_read always assumes that File_read_line pushes a value on the stack (which clearly did not happen). On read failure, it would then pop the stack (tripping the assertion) to push nil. The other user (File_lines) is also affected by this change, but the Lua 5.2.4 documentation says that it should also return nil on EOF, fitting this implementation. Change-Id: I9cc8a5319523b2b56f4ae4735bbdbc1196387386 Reviewed-on: https://code.wireshark.org/review/18016 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl>
2016-09-30cmake: make WERROR_COMMON_FLAGS a normal stringPeter Wu1-7/+5
Instead of checking for the boolean "FALSE", just set an empty string. This avoids the need to check for WERROR_COMMON_FLAGS before using it. The transformation is the same for all files, remove "if (WERROR_COMMON_FLAGS)" and "endif()", reindent and add quotes (since we have a string here and not a list). Modelines have been added where missing. Change-Id: I0ab05ae507c51fa77336d49a99a226399cc81b92 Reviewed-on: https://code.wireshark.org/review/17997 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: João Valverde <j@v6e.pt> Reviewed-by: Dario Lombardo <lomato@gmail.com> Tested-by: Dario Lombardo <lomato@gmail.com>
2016-08-31Don't do any Decode As stuff for dissector tables not used with Decode As.Guy Harris1-1/+1
Have all dissector tables have a "supports Decode As" flag, which defaults to FALSE, and which is set to TRUE if a register_decode_as() refers to it. When adding a dissector to a dissector table with a given key, only add it for Decode As if the dissector table supports it. For non-FT_STRING dissector tables, always check for multiple entries for the same protocol with different dissectors, and report an error if we found them. This means there's no need for the creator of a dissector table to specify whether duplicates of that sort should be allowed - we always do the check when registering something for "Decode As" (in a non-FT_STRING dissector table), and just don't bother registering anything for "Decode As" if the dissector table doesn't support "Decode As", so there's no check done for those dissector tables. Change-Id: I4a1fdea3bddc2af27a65cfbca23edc99b26c0eed Reviewed-on: https://code.wireshark.org/review/17402 Petri-Dish: Guy Harris <guy@alum.mit.edu> Reviewed-by: Guy Harris <guy@alum.mit.edu>
2016-08-23CMake: Allow setting per target compiler warningsJoão Valverde1-0/+1
Setting our compiler warning flags in CMAKE_C_FLAGS does not allow using different flags per target. Allow for that possibility by setting the internal WS_WARNINGS_{C,CXX}_FLAGS and using the COMPILE_OPTIONS property to set them. This change is just setting mechanism and there should be no difference in generated warnings. The check_X_compiler_flag cmake test is changed to test each flag individually. We need a list, not a space separated string, and the aggregate test is not significant. Change-Id: I59fc5cd7e130c7a5e001c598e3df3e13f83a6a25 Reviewed-on: https://code.wireshark.org/review/17150 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: João Valverde <j@v6e.pt>
2016-08-05Add PI_DEPRECATED expert info groupJoão Valverde2-0/+13
Change-Id: Ibc43b1976d5827e8c40252a5200852fbcd00b70c Reviewed-on: https://code.wireshark.org/review/16763 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net> Reviewed-by: João Valverde <j@v6e.pt>
2016-07-26Use ws_g_warning in wslua.Michael Mann6-39/+44
The g_warning calls seem legitimate, so "hide" them from checkAPIs.pl. Change-Id: I6d25b08e22aeeb0244e07836385f2b67d6261546 Reviewed-on: https://code.wireshark.org/review/16703 Reviewed-by: Michael Mann <mmann78@netscape.net>
2016-07-25Fix checkAPI.pl warnings about printfMichael Mann2-3/+5
Many of the complaints from checkAPI.pl for use of printf are when its embedded in an #ifdef and checkAPI isn't smart enough to figure that out. The other (non-ifdef) use is dumping internal structures (which is a type of debug functionality) Add a "ws_debug_printf" macro for printf to pacify the warnings. Change-Id: I63610e1adbbaf2feffb4ec9d4f817247d833f7fd Reviewed-on: https://code.wireshark.org/review/16623 Reviewed-by: Michael Mann <mmann78@netscape.net> Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
2016-07-21No need to check for string option values being null.Guy Harris1-2/+2
A string option, if present, always has a value; it might be a null *string*, but you won't get a null pointer (if the option isn't present, it simply isn't present). Fix some comments while we're at it. Change-Id: I9c1420f56998a7d04de5c5cc2e92631b181f303a Reviewed-on: https://code.wireshark.org/review/16564 Reviewed-by: Guy Harris <guy@alum.mit.edu>