Commit Graph

147 Commits

Author SHA1 Message Date
Guy Harris 1f5f63f8ef Generalize wtap_pkthdr into a structure for packet and non-packet records.
Separate the stuff that any record could have from the stuff that only
particular record types have; put the latter into a union, and put all
that into a wtap_rec structure.

Add some record-type checks as necessary.

Change-Id: Id6b3486858f826fce4b096c59231f463e44bfaa2
Reviewed-on: https://code.wireshark.org/review/25696
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2018-02-09 00:29:51 +00:00
Dario Lombardo 8cd389e161 replace SPDX identifier GPL-2.0+ with GPL-2.0-or-later.
The first is deprecated, as per https://spdx.org/licenses/.

Change-Id: I8e21e1d32d09b8b94b93a2dc9fbdde5ffeba6bed
Reviewed-on: https://code.wireshark.org/review/25661
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Petri-Dish: Dario Lombardo <lomato@gmail.com>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2018-02-08 14:57:36 +00:00
Guy Harris 444cac45b2 valid_but_empty_file is a Boolean, so declare it as such.
If it's either going to be -1 or 1, and any value > 0 is "valid but
empty", that's just a Boolean, with -1 corresponding to false and 1
corresponding to true.  Make it so.

Change-Id: Ib7418fe7573b5d2cd1e2ef5de601c0262c8d9de1
Reviewed-on: https://code.wireshark.org/review/25605
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2018-02-04 23:18:58 +00:00
Guy Harris 7b169cdedd Don't treat short reads as errors when checking the file type.
A short read isn't a clear error when you don't have a magic number and
are doing "does this look somewhat like a file of this type" test, it's
probably an indication that it's *not* a file of that type.

Change-Id: Iab2f32e7d169a777c50a36958eeb4e82a3809227
Reviewed-on: https://code.wireshark.org/review/25602
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2018-02-04 22:54:42 +00:00
Dario Lombardo c440a24b1b wiretap: use SPDX identifiers (partial work).
Change-Id: I28436e003ce7fe31d53e6663f3cc7aca00845e4b
Reviewed-on: https://code.wireshark.org/review/25392
Petri-Dish: Dario Lombardo <lomato@gmail.com>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Reviewed-by: Gerald Combs <gerald@wireshark.org>
2018-01-20 17:23:08 +00:00
Gerald Combs 5dbc1d8d1c IxVeriWave: Adjust signature timestamp checking.
Move the signature timestamp bounds checks inside get_signature_ts. Fix
what appears to be an off-by-one error.

Bug: 14297
Change-Id: I9ca1762a8418e47153f270a1a62b2d0d3a800130
Reviewed-on: https://code.wireshark.org/review/25229
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2018-01-10 09:19:06 +00:00
Guy Harris 4b8504f39a Inquire what frame_size < msdu_length means.
Change-Id: Ie618ed61fb098bfe55529e31e9cc3f6bfe7d4ac0
Reviewed-on: https://code.wireshark.org/review/23575
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-09-16 20:24:38 +00:00
Guy Harris f3cf2ffd3a Move a test.
If we're not going to subtract 4 from actual_octets, there's no reason
to treat actual_octets < 4 as an error.

This makes the "subtract 4 octets of crap" code similar in all cases,
hopefully further reducing the opacity of the code.

Change-Id: I41cda101b321422ce5fd4474fb6903bfe471cb63
Reviewed-on: https://code.wireshark.org/review/23534
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-09-14 05:14:31 +00:00
Guy Harris 9e905abe54 Replace a magic constant with an expression that represents what it is.
(In the hope of making the code slightly less opaque.)

Change-Id: Ic635eedac4eb9fb764b3633c9003608b9b4ae3df
Reviewed-on: https://code.wireshark.org/review/23533
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-09-14 04:58:37 +00:00
Guy Harris 1e26510a6a Fix comments.
Change-Id: Ie9fe895a2763e74a5f1e25f3f1b9d63e02c0bd71
Reviewed-on: https://code.wireshark.org/review/23532
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-09-14 02:30:30 +00:00
Guy Harris 4f34f4296c Remove the 4 octets of junk even if that leaves no octets.
Be consistent in the treatment of those 4 octets.

Change-Id: If35c94bd299c3e7ec76306daf325d5aa5e3a19b9
Reviewed-on: https://code.wireshark.org/review/23530
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-09-14 02:15:00 +00:00
Joerg Mayer 75853200c6 A number of 0 for actual_octets may just be an end of record instead of an error.
Also fix some whitespace "errors".

Change-Id: Ic1dc1bad6dafbbc21a87665675e654cd322178a0
Bug: 14051
Reviewed-on: https://code.wireshark.org/review/23476
Reviewed-by: Jörg Mayer <jmayer@loplof.de>
2017-09-12 14:14:19 +00:00
Guy Harris d0865fd619 Allow bigger snapshot lengths for D-Bus captures.
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-06-05 05:28:26 +00:00
Guy Harris 09209056ce Set nss and rate_mcs_index in more arms of the Series II PLCP switch.
For HT mixed, set it the same way it's set for HT greenfield.

For pre-HT, set it to 0.

Also, for the "unknown" case, set rate_mcs_index to 0.
This should obviate the need to initialize either of those variables,
don't initialize them, so that failing to set them in an arm of the
switch statement shows up as an error if the compiler's dataflow
analysis actually bothers to check this.

Change-Id: I92703770dd5000a579b53609fb93a2085fd9fca3
Reviewed-on: https://code.wireshark.org/review/21573
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-09 17:51:59 +00:00
Alexis La Goutte 666366e069 vwr (wiretap): fix Assigned value is garbage or undefined Warning found by Clang Analyzer
Change-Id: I45766c7e89a009176ae56fe9e9f5a8dd63b2995b
Reviewed-on: https://code.wireshark.org/review/21567
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2017-05-09 11:36:11 +00:00
Guy Harris ee37135c67 Note that the HT MCS index macros can't return all possible MCS values.
I don't know whether this is a bug in the software or a lack of support
in the hardware.

This at least notes the issue in CID 1405905.

Change-Id: I481454bc38842a0f877cb8b52b73e1156fd362b5
Reviewed-on: https://code.wireshark.org/review/21558
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-08 02:39:51 +00:00
Guy Harris 548e9762fb Fix handling of 20 MHz VHT with MCS = 9.
That's valid only for 3 or 6 spatial streams; return 0 as the bitrate
for all other values.  Also, handle the 6 spatial streams case.

Give the conversion tables explicit sizes, to make it clear what
subscripts are valid.

Return 0 for an MCS > 9, for consistency with the other error return,
and to mark it as clearly wrong.

Fixes CID 1405908.

Change-Id: Icbf655c63c0e88fd6cec7c66bae85fd887a3bd9c
Reviewed-on: https://code.wireshark.org/review/21557
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-07 21:19:15 +00:00
Guy Harris 1247aaef83 Set some variables in the "RF only" code path.
That should remove the need to initialize them, make it clearer what
values are being used in the "RF only" case, and catch any cases where
they don't get set in the "not just RF" case in the future.

Change-Id: I10c3ecef608ed2f481111fb7bc32bb8494b68d27
Reviewed-on: https://code.wireshark.org/review/21536
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-06 02:33:37 +00:00
Michael Mann 82c667b1a6 vwr.c: Initialize some local variables
Prevents some compiler warnings

Change-Id: I9d62d0f3e6b7794c5ed43f37d52f86d81344a33c
Reviewed-on: https://code.wireshark.org/review/21531
Reviewed-by: Michael Mann <mmann78@netscape.net>
2017-05-05 23:09:02 +00:00
Guy Harris 3ef57b9ea2 Small cleanups.
Add some parentheses to make an expression clearer to people who haven't
memorized the table of C operator precedences.

Don't fiddle the nss variable in place; explicitly combine it with the
IS_TX value when we put it in the header, to make it clearer what's in
that header byte.

Change-Id: I870b892fb9dab2bc210956f923e0183f4e147989
Reviewed-on: https://code.wireshark.org/review/21530
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-05 22:13:28 +00:00
Guy Harris c6d7759081 Assume the Series II does the same with NSS for VHT that the Series III does.
The packet-ixveriwave.c dissector appears to do so.

Change-Id: Ie02c4611ef18e83abcd3b625bbc40014080ffca1
Reviewed-on: https://code.wireshark.org/review/21525
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-05 21:14:09 +00:00
Guy Harris a1478413be NSS != (MCS / 8) + 1 for MCS >= 32.
Do the MCS -> NSS mapping for HT by a table lookup.

For VHT with Series II, do it the old way for now, under the assumption
that the MCS index and NSS are bit fields, but note that the MCS index
and NSS bit fields would overlap.

Change-Id: Ibc89590faf15900171b2a1b4ac1e50793ed70c32
Reviewed-on: https://code.wireshark.org/review/21523
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-05 20:06:55 +00:00
Guy Harris 1a5c6da9fe Series I only handles pre-HT, so rename and remove variables.
Change-Id: Id9f086983544647267854446932a3ffe2ec2cc55
Reviewed-on: https://code.wireshark.org/review/21522
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-05 18:43:22 +00:00
Guy Harris 8493630f0c Have separate routines for calculating pre-HT/HT/VHT data rates.
That maeks the code a little clearer.

It also makes it clearer that the "MCS index" is, for pre-HT, a rate
index, so rename some variables and macros.

Change-Id: I64b7bca073df0f837e5d968682345187000207fc
Reviewed-on: https://code.wireshark.org/review/21521
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-05 18:33:21 +00:00
Guy Harris cd79802063 Another comment explaining why a packet size check isn't necessary.
Change-Id: Id7494823f9af69c6185b41983ca78ead2dae24dd
Reviewed-on: https://code.wireshark.org/review/21492
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-04 07:21:18 +00:00
Guy Harris 4ca15be3eb Do packet length checks iff they're necessary.
They're not necessary for most hardware; remove the unnecessary checks,
and add comments indicating why they're not necessary (or fix the
"maximum value of actual_octets is" part of the comment).

They *are* necessary for Series III hardware; put in the check.

Change-Id: Idd64a74099d5cf7398a2ddb850442e53c9206724
Reviewed-on: https://code.wireshark.org/review/21491
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-04 07:12:47 +00:00
Guy Harris dead1b3817 Add a comment.
Change-Id: Ia60a0cdac3d70862aa5941487af142bd26ab2b80
Reviewed-on: https://code.wireshark.org/review/21489
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-04 04:51:44 +00:00
Guy Harris 0d5c98c4a6 Clean up whitespace and a #define.
Add some additional blank lines, remove some extra, blank lines, fix
indentation.

Make vVW510024_E_IS_VLAN 32-bits, to match the other flags.

Change-Id: Id1cd63ff2b75764907a44e9f8525b1537666fde1
Reviewed-on: https://code.wireshark.org/review/21488
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-04 03:29:09 +00:00
Guy Harris 0d69b9aef1 Update comments.
There's only a 17-byte PLCP header with the Series III hardware.

Change-Id: Ice8dfbbc5daa0578ee4eb6588fc8a8b597806d0d
Reviewed-on: https://code.wireshark.org/review/21487
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-04 02:56:12 +00:00
Guy Harris 7703d45803 Use a #define for the PLCP type.
That makes it clearer that the Series I hardware doesn't do HT or VHT.

Change-Id: Ibeccfcba997555bef06098828f01951dc32a6d2c
Reviewed-on: https://code.wireshark.org/review/21486
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-04 02:50:56 +00:00
Guy Harris 04e5d8d715 Remove an unnecessary comment, fix another comment.
Change-Id: Id20517c99663c624b6bfd58d7475284db450e003
Reviewed-on: https://code.wireshark.org/review/21485
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-04 02:12:37 +00:00
Guy Harris 1ac685f771 Remove trailing white space.
Change-Id: I8cdbde058c7ebb9aaaac4739e9a5c206e0d2c919
Reviewed-on: https://code.wireshark.org/review/21484
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-04 01:53:38 +00:00
Guy Harris 7c6bdc3ac9 More description of stats headers.
Change-Id: I21ee8b39b96dd58ea1dfeb502e8734b33aa298c1
Reviewed-on: https://code.wireshark.org/review/21483
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-04 01:45:56 +00:00
Guy Harris 6b7d99022b Fix some comments, shuffle some code, change a constant in an assignment.
Fix "VHTPPDU" to be "VHT PPDU".

Move the code that processes the RSSI values before the code that
processes the next two bytes of the header, so it's done in order; that
makes it a bit easier to see the layout of that header (although 2 bytes
of it are processed below).

Fix the comment describing what the first 16 bytes of the record data
after the stats are.  Don't use vVW510021_W_STATS_HEADER_LEN - that's
for the Series II hardware.

Fix some indentation.

Change-Id: If47c4a44fd5e72971a28daf6af88d5e19c53abbe
Reviewed-on: https://code.wireshark.org/review/21482
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-04 01:33:10 +00:00
Guy Harris cd12580de1 For S3, yes, the PLCP type can be vVW510021_W_PLCP_LEGACY.
(The dissector checks for it.)

Change-Id: Ic1456b263f3cbda2a630259a2b71b1f1015b5e3e
Reviewed-on: https://code.wireshark.org/review/21442
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-01 02:56:11 +00:00
Guy Harris 20d6b67bff Make the record-length checks take the RF information into account.
Include the RF information length if there's RF information.

While we're at it:

Rename the variable holding the offset of the stats information from "j"
to "stats_offset", to make it clearer what it is.

Clean up whitespace.

Get rid of comments that no longer apply.

Improve the comment explaining the MPDU_OFF value for Series III.

Change-Id: I49e2926a80aa8bb11f87d97fdc628bcc9f1220e0
Reviewed-on: https://code.wireshark.org/review/21439
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-05-01 00:10:44 +00:00
Guy Harris 30d674b241 Do all the command-type analysis of decode_msg() in the switch statement.
Add #defines for the remaining command types, based on some other

Get rid of the HEADER_IS_xxx #defines; they're the same for all
hardware, and the switch statement doesn't distinguish between different
hardware.

Set *IS_TX in the switch statement cases.  While we're at it, set v_size
and *v_type in the default case; add a VT_UNKNOWN value for that case.

Change-Id: Ib17d1e435c99fcb746144b4735c160a5f22b7544
Reviewed-on: https://code.wireshark.org/review/21438
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-04-30 19:45:27 +00:00
Guy Harris 9606d671f6 Use some #defines.
Change-Id: I9cafd3b745eb0fec39c0a9b5f529249584107971
Reviewed-on: https://code.wireshark.org/review/21435
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-04-30 18:10:18 +00:00
Guy Harris 2700055d3c Fix a comment to reflect reality.
There aren't any "4 Management bytes for OCTO version FPGA" in that
header.

Change-Id: I57f673dad5bc10b888fae22c2fb1a45af57ff493
Reviewed-on: https://code.wireshark.org/review/21434
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-04-30 17:45:02 +00:00
Guy Harris 7f2c6e1300 Some cleanup.
Whitespace, remove now-irrelevant comments, add more comments, expand
some comments, make an if chain more straightforward.

Change-Id: I9772022247e2f0fdbfc676db9f0031bad7f8884d
Reviewed-on: https://code.wireshark.org/review/21423
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-04-30 03:52:11 +00:00
Guy Harris 9d49ab79a4 Boolean bitfields don't need a mask, just a bit.
You don't have to and the bitfield container with a mask and compare it
against the bit, you can just test the bit, which is a pretty standard C
idiom.

Change-Id: I87b3d84f802114199fb93357358412c623199ca2
Reviewed-on: https://code.wireshark.org/review/21422
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-04-30 03:39:24 +00:00
Guy Harris 5c1cf9d46a Series III packets appear to have an FCS at the end.
Change-Id: I9c4ba78cba4cb32a1473c6b8573880f2b56f1fde
Reviewed-on: https://code.wireshark.org/review/21417
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-04-30 02:43:04 +00:00
Guy Harris 113676bd95 Get rid of duplicate #defines, and shuffle some comments and #defines.
This makes stuff a bit clearer.

Also, add some comments, remove some redundant comments, fix some
comments, and use some #defines instead of hardcoded constants and
expressions.

And get rid of an unnecessary setting of *err to WTAP_ERR_SHORT_READ -
either it's a short read, in which case it was already set to
WTAP_ERR_SHORT_READ, or it's *not* a short read, in which case *err was
set to the appropriate error code, and we should leave it alone.

Change-Id: I657f505915854ac4a6b85e87b4021961b1a1c507
Reviewed-on: https://code.wireshark.org/review/21415
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-04-30 01:11:03 +00:00
Guy Harris a48997a174 Remove Series III code from vwr_read_s2_W_rec().
It's only called if vwr->FPGA_VERSION is S2_W_FPGA, so any code that's
run only if it's *not* S2_W_FPGA is dead code.  Remove it, for clarity.

While we're at it, add some new comments, fix some comments, and get rid
of an unused argument to vwr_read_s2_W_rec().

Change-Id: I3e4bd5d7a79f36d8354a0bbf875ee87eeaf60d43
Reviewed-on: https://code.wireshark.org/review/21414
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-04-30 00:38:24 +00:00
Michael Mann cc9b38a734 Improve ixveriwave dissector
Bug: 13652
Bug: 12535
Change-Id: Ie4c140acbe983a585776bc1430cf407cdcd6e07a
Reviewed-on: https://code.wireshark.org/review/21356
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-04-29 09:47:28 +00:00
Guy Harris 9f8c2296d0 Add/expand comments, add/shuffle #defines.
Attempt to make the various metadata headers, and the code that
constructs them, a bit clearer.

(Also, it's VeriWave; be consistent.)

Change-Id: I0bb7d70f547d492c4947ceb313888991f2d374f2
Reviewed-on: https://code.wireshark.org/review/21360
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2017-04-27 01:59:19 +00:00
Guy Harris e91af83c63 Replace some seeks forward with wtap_read_bytes() with a null buffer pointer.
If the seek forward is just skipping record content that's not
(currently) interesting, use wtap_read_bytes() with a null buffer
pointer; it catches short "reads" and requires less seeking, so it may
work better when reading from a pipe.

Change-Id: Ifb07d20e0391a8ed97da85149d971b4e9ef093a8
Reviewed-on: https://code.wireshark.org/review/17976
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2016-09-29 04:35:48 +00:00
Guy Harris 48a66835ee Use wtap_read_bytes() to skip over bytes when reading a record.
Allow file_read() to take a null pointer as a buffer argument; a null
argument means "do everything except copy the bytes from the file to the
user buffer".  That means that wtap_read_bytes() and
wtap_read_bytes_or_eof() also support a null pointer as a buffer
argument.

Use wtap_read_bytes() with a null buffer argument rather than
file_skip() to skip forward over data.

This fixes some places where files were mis-identified as ERF files, as
the ERF open heuristics now get a short "read" error if they try to skip
over more bytes than exist in the file.

Change-Id: I4f73499d877c1f582e2bcf9b045034880cb09622
Reviewed-on: https://code.wireshark.org/review/17974
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2016-09-28 23:45:58 +00:00
Michael Mann 335b2c0233 vwr.c Dynamically allocate large buffers
VS Code Analysis claims the arrays are too large and should be moved to help

Change-Id: I741ebe8cc73a108cb6e6d9ecbda37e2a4b6e1b4b
Reviewed-on: https://code.wireshark.org/review/16423
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
2016-07-14 02:45:41 +00:00
Guy Harris 5635d9a02d Check for packets bigger than WTAP_MAX_PACKET_SIZE.
And note the cases where we don't have to check, as the length in the
file is 2 bytes long, and 65535 + the metadata length is <
WTAP_MAX_PACKET_SIZE.

Change-Id: I1e690eeee900b9aa7484dc0bd0c106dc38c77269
Reviewed-on: https://code.wireshark.org/review/15180
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2016-04-30 01:55:42 +00:00