Commit Graph

2383 Commits

Author SHA1 Message Date
Guy Harris 10b33c06de Remove file_error() calls after pcap_read_block() calls.
pcap_read_block() takes err and err_info arguments, and sets them on
error; no need to call file_error() if pcap_read_block() fails.

Change-Id: I33b96d31395bf7d66abdecbebd5cf775e8662004
Reviewed-on: https://code.wireshark.org/review/4209
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-09-20 18:54:17 +00:00
Guy Harris 32c38a4ecc Add file_error() calls after file_read().
If file_read() doesn't return the exact number of bytes you asked for,
and you really need all those bytes to be there, you have to call
file_error() to find out what the problem is.

Change-Id: I4cc87bc1b6cc5a49bbcbf93b56106f57af290d20
Reviewed-on: https://code.wireshark.org/review/4205
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-09-20 18:31:28 +00:00
Guy Harris 3c5541906b Set err_info if the attempts to read record headers fail.
If it fails due to, for example, the file being gzipped and having a bad
gzip CRC, the error returned is WTAP_ERR_DECOMPRESS and, for that error,
err_info is expected to be set to a string giving details of the
problem, so we need to pass back to our caller the string in question.

Bug: 10484
Change-Id: I3aa2a92d04fcc08946ff073a40efa708079bbb3e
Reviewed-on: https://code.wireshark.org/review/4201
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-09-20 17:46:02 +00:00
Guy Harris 6f16f26d64 The Shomiti document is available on the Wayback Machine.
I don't know why it was unavailable at some point, but it appears to be
available again.  Update the comment to reflect that.

Change-Id: I7dc1fcb554e73d3b0fc2bd2fbdf6235e791a4253
Reviewed-on: https://code.wireshark.org/review/4200
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-09-20 09:17:36 +00:00
Michal Labedzki 4fd89b0ba1 Logcat: Fix crashes when try to use logcat_text open routine on binary file
Change-Id: Ied0778af9d5ff0e49c6efd4ea9411ae1a72cb8e5
Reviewed-on: https://code.wireshark.org/review/4190
Petri-Dish: Michal Labedzki <michal.labedzki@tieto.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
2014-09-20 08:33:12 +00:00
Michal Labedzki 39864c12fd Logcat: Add more save formats over exported pdu
Add all logcat format like brief, threadtime, long, etc. when try to save
logcat logs where there is EXPORTED_PDU layer.

Change-Id: I338f0bbd46dd8db984efc1c03980c7e9c7401a44
Reviewed-on: https://code.wireshark.org/review/4164
Reviewed-by: Michal Orynicz <michal.orynicz@tieto.com>
Reviewed-by: Michal Labedzki <michal.labedzki@tieto.com>
Tested-by: Michal Labedzki <michal.labedzki@tieto.com>
2014-09-18 13:10:14 +00:00
Bill Meier a379ac74d2 Fix spelling: cant-->can't, wont-->won't, etc
Change-Id: Ia6c3e7a25615bf8e052c3bacf096d76df775c9c2
Reviewed-on: https://code.wireshark.org/review/4126
Reviewed-by: Bill Meier <wmeier@newsguy.com>
2014-09-16 15:31:58 +00:00
Guy Harris 47c592938b Add some additional checks in SnifferDecompress().
Check the input pointer in the while clause of the loop, so that we
handle an empty input buffer.

When reading a bit mask, check before fetching the bit mask that we have
two bytes of bit mask and the byte after it.

Before putting an uncompressed input byte into the output, make sure we
wouldn't run past the end of the output buffer.

Before copying an earlier string from the output buffer, make sure it
doesn't run past the end of the data we've decompressed so far.

Bug: 10461
Change-Id: I8bb8d0d291368ae8bf0ac26970ff54d3262a7e6e
Reviewed-on: https://code.wireshark.org/review/4083
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-09-11 20:30:20 +00:00
Bill Meier cc286bad25 Various minor changes:
- Create/use some extended value_strings
- Remove unneeded #includes;
- Do whitespace changes;
- Add editor modelines.

Change-Id: I2e1ea37dddfd5e8656c90c0d45a6596c4912bb2c
Reviewed-on: https://code.wireshark.org/review/4065
Reviewed-by: Bill Meier <wmeier@newsguy.com>
2014-09-10 16:17:29 +00:00
Bill Meier 93cc6f004f Fix some spelling & grammar.
Change-Id: Iedeaa411caa0823922dd79c27897a2349d4e6907
Reviewed-on: https://code.wireshark.org/review/4054
Reviewed-by: Bill Meier <wmeier@newsguy.com>
2014-09-09 19:43:27 +00:00
Guy Harris afb939b5f4 Make the count of bytes read from the file 64 bits.
We probably won't get files that big, but let's at least be prepared;
that squelches some compiler warnings.

Change-Id: Ia43ff78af7df63c7204c41d8331fea946de63116
Reviewed-on: https://code.wireshark.org/review/4015
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-09-06 18:52:47 +00:00
Guy Harris a52939cef2 Fix trailing blank.
Change-Id: Ide4afb2fb78c80800f04a40031fa1f35804f6464
Reviewed-on: https://code.wireshark.org/review/3809
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-08-24 08:12:53 +00:00
Guy Harris bb0c17546f Strengthen the heuristics for pcap subtypes.
When trying to guess what type of capture a file is, look for as many
bogosities (caplen > len, microseconds >= 10^6/nanoseconds >= 10^9,
too-high caplen, too-high original len, caplen > snapshort length), to
increase the chances of guessing correctly.

(Every time somebody uses 0xa1b2c3d4 as the magic number for a capture
file that isn't standard pcap format, God kills a kitten.  Please, think
of the kittens.)

Change-Id: I3f397d598ed61dc82e2832be30452ebe8ace98e8
Reviewed-on: https://code.wireshark.org/review/3808
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-08-24 08:07:53 +00:00
Guy Harris b8293f95ad If we don't find a NetScaler signature, don't report an error.
It's *NOT* an error; it's just a file that isn't a NetScaler file.
Otherwise, we report errors on files that should just be passed on to
other open routines.

Also, NetScaler files are *NOT* text files, and we should *NOT* use
".txt" as the suffix.

Change-Id: If001abbbbc3de3ea27439a44a47ce1d6071d38ae
Reviewed-on: https://code.wireshark.org/review/3678
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-08-18 00:32:59 +00:00
Guy Harris 6a8267270f Return 0, not -1, for "this isn't my type of file".
-1 means "I got an error reading this file, so there's no point in
trying any more open routines".  It doesn't mean "I couldn't find any
matching pattern in the text"; that's 0, for "this isn't my type of
file, but keep trying".

Change-Id: I9d2e8b8fe6720052cacf70f0bacdcbc1175202cc
Reviewed-on: https://code.wireshark.org/review/3674
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-08-17 23:03:20 +00:00
Michał Orynicz 735263e58e Logcat text: small fixes
* fix exporting "beginning of" frame logs into info field
  * add missing "Failure" level to regexp in wiretap part
  * remove usage of GDateTime from wiretap part

Change-Id: Ibdea730623241cccbbc1694a34daa308e48c0a89
Reviewed-on: https://code.wireshark.org/review/3493
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
2014-08-08 08:12:10 +00:00
AndersBroman febbe1286d Add casts to make logcat-text build on Win64
Change-Id: I38d65a06b925653e22a59a4a4cd0a53a87072b49
Reviewed-on: https://code.wireshark.org/review/3456
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-08-06 08:49:56 +00:00
Michał Orynicz 1a02ca0150 Add support for android logcat text files
Wireshark already supports reading and writing logcat
logs saved in binary files. Binary format, although
better, is used less often than saving those logs to
text files.

This patch extends wireshark's support for android logcat
logs to reading and writing logcat logs in text files.

Features:
* support for tag, brief, process, thread, time, threadtime
  and long formats
* saving in original format
* it's generally awesome

Change-Id: I013d6ac2da876d9a2b39b740219eb398d03830f6
Reviewed-on: https://code.wireshark.org/review/1802
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-08-06 06:46:50 +00:00
Bill Meier f3dd7fe1eb Fix whitespace/indentation to match editor modelines.
Change-Id: I3445ae22f10584582d465bf632942e016f5f70ca
Reviewed-on: https://code.wireshark.org/review/3452
Reviewed-by: Bill Meier <wmeier@newsguy.com>
2014-08-05 20:42:21 +00:00
Evan Huus d34d09ebe4 Initialize a variable to squelch a false-positive warning on the mac buildbot
Change-Id: I43f5ea7a73941b518c714216df0d7e25ad260012
Reviewed-on: https://code.wireshark.org/review/3384
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-08-03 17:26:05 +00:00
Guy Harris 0734ac385f Rename buffer_ routines to ws_buffer_ to avoid name collisions.
In particular, epan/wslua/lrexlib.c has its own buffer_ routines,
causing some linker warnings on some platforms, as reported in bug
10332.

(Not to be backported to 1.12, as that would change the API and ABI of
libwsutil and libwiretap.  We should also make the buffer_ routines in
epan/wslua/lrexlib.c static, which should also address this problem, but
the name change avoids other potential namespace collisions.)

Change-Id: I1d42c7d1778c7e4c019deb2608d476c52001ce28
Reviewed-on: https://code.wireshark.org/review/3351
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-08-02 11:01:29 +00:00
Peter Wu 0492921adc Replace lseek/fstat by ws_lseek64/ws_fstat64
lseek returns an off_t type which is system-dependent. Use ws_lseek64 in
favor of lseek as that supports 64-bit quanities.

Use ws_fstat64 instead of stat to support 64-bit file sizes on Windows.
For the majority of the changes, this makes no difference as they do not
apply to Windows ("ifndef _WIN32"; availability of st_blksize).

There are no other users of "struct stat" besides the portability code
in wsutil. Forbid the use of fstat and lseek in checkAPIs.

Change-Id: I17b930ab9543f21a9d3100f3795d250c9b9ae459
Reviewed-on: https://code.wireshark.org/review/3198
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-07-25 21:26:01 +00:00
Evan Huus ae64e09511 Add cast to satisfy win7 buildbot
I really don't understand why MSVC would make the result of this computation an
int64 then complain about down-casting to an int16 when *all* of the
participating variables are int16 or smaller...

Change-Id: I2d9c27ac22b51b10e4872a6640881c8d0ec566e7
Reviewed-on: https://code.wireshark.org/review/3180
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-07-23 17:44:24 +00:00
Michal Labedzki ccbf373e49 Logcat: Add support for conversion from Exported PDU
Exported PDU may contains (Binary) Logcat, so it is possible to
"export" logcat binary from it.

Change-Id: Ic6607126e739ea3972b46c2bf19f064597d4e970
Reviewed-on: https://code.wireshark.org/review/3001
Petri-Dish: Michal Labedzki <michal.labedzki@tieto.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michal Labedzki <michal.labedzki@tieto.com>
Tested-by: Michal Labedzki <michal.labedzki@tieto.com>
2014-07-23 10:31:49 +00:00
Роман Донченко 696cb6c17b Use forward slashes in paths to runlex.sh
This gets rid of "MS-DOS style path detected" warnings from Cygwin.

Change-Id: Id10429669704aa371dbf56a9398947c8002260ad
Reviewed-on: https://code.wireshark.org/review/3024
Reviewed-by: Evan Huus <eapache@gmail.com>
Petri-Dish: Graham Bloice <graham.bloice@trihedral.com>
Tested-by: Wireshark Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Graham Bloice <graham.bloice@trihedral.com>
2014-07-20 13:15:59 +00:00
Guy Harris d4dab16a3f Only one buffer.c, please.
Otherwise, if you link with both libwiretap and libfiletap, it's
anybody's guess which one you get.  That means you're wasting memory
with two copies of its routines if they're identical, and means
surprising behavior if they're not (which showed up when I was debugging
a double-free crash - fixing libwiretap's buffer_free() didn't fix the
problem, because Wireshark happened to be calling libfiletap' unfixed
buffer_free()).

There's nothing *tap-specific about Buffers, anyway, so it really
belongs in wsutil.

Change-Id: I91537e46917e91277981f8f3365a2c0873152870
Reviewed-on: https://code.wireshark.org/review/3066
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-07-15 23:43:32 +00:00
Guy Harris 7344cfc78f Have buffer_free() null out the buffer data pointer.
That prevents some double-free issues (I got one when doing non-"Update
list of packets in real time" captures, if I do one such capture and
then another one).

Change-Id: Ia08034d9d1640bad21b74960efade8926dbfc5de
Reviewed-on: https://code.wireshark.org/review/3063
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-07-15 23:23:05 +00:00
Alexis La Goutte ef1b11f622 Fix Dead Store (Dead assignement/Dead increment) warning found by Clang
Change-Id: I17dc2259e039586b9a06944bd1c2b552dd23855d
Reviewed-on: https://code.wireshark.org/review/3052
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-07-15 22:52:31 +00:00
Graham Bloice 9ba0a18d12 Fix up library names when using CMake on Windows
Change-Id: I3573e69eb54044bb915161756dbb8f18cc769061
Reviewed-on: https://code.wireshark.org/review/2957
Reviewed-by: Graham Bloice <graham.bloice@trihedral.com>
2014-07-15 20:37:44 +00:00
Graham Bloice 8044097473 Fix the x64 builds after the commit:b3b1f7c3aa2233a147294bad833b748d38fba84d
From Change: 2803

Change-Id: Ic57fb0e3c1e0450561aebe48a873a3fdb2e8e105
Reviewed-on: https://code.wireshark.org/review/3014
Reviewed-by: Graham Bloice <graham.bloice@trihedral.com>
2014-07-11 21:37:51 +00:00
Gerald Combs e2038e0300 Add strlen casts.
Change-Id: Icaf80f060c476dd7259c04c4cce4123025ef1dab
Reviewed-on: https://code.wireshark.org/review/3012
Reviewed-by: Gerald Combs <gerald@wireshark.org>
2014-07-11 21:11:17 +00:00
Peter Wu b3b1f7c3aa logcat: improve (crash) robustness, improve names
The logcat version detector would crash with ASAN enabled because it did
not validate the payload length and hence a payload length of 0 would
trigger out-of-bounds access. (This happened on non-logcat data.)

This patch tries to get rid of all magic numbers by using a structure,
improves the version detector to validate the payload length and
prevents crashes due to missing nul-terminators in the input. Older
Android kernels would create entries with __pad with random contents, so
that cannot be used to determine version for v1. Instead, use heuristics
on the priority, tag and maybe the msg field.

Furthermore, Android is mostly (if not, always?) Little-Endian, so add
conversions where necessary (just in case WS supports BE arches).

"microseconds" has been renamed to "milliseconds" because that is what
they are, actually. A duplicate logcat_log loop has been refactored
such that one loop is sufficient, instead of separate buffers for each
log part, a single one is now used. get_priority does not really need
a pointer, just make it accept a character.

The output has been validated against v1 and v2 logcat binary formats
with __pad (hdr_size) equal to 0, and on attachment 9906.

Change-Id: I46c8813e76fe705b293ffdee85b4c1bfff7d8362
Reviewed-on: https://code.wireshark.org/review/2803
Reviewed-by: Michal Labedzki <michal.labedzki@tieto.com>
Tested-by: Michal Labedzki <michal.labedzki@tieto.com>
2014-07-11 13:29:25 +00:00
Guy Harris b5d4128bee Avoid sign-extending bytes before handing them to <ctype.h> macros.
Pointed out by the Visual Studio code analyzer.

Change-Id: Idd429b4d0fb3db11ce171c3a5b38bdc55cc53c15
Reviewed-on: https://code.wireshark.org/review/2988
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-07-11 00:28:36 +00:00
Guy Harris ea721b8938 Revert "More needed to get rid of "lib" in "libwsutil" on Windows."
This reverts commit 28719a4e4e.

Most of the change to remove "lib" seems to work, but the list of libraries to sign appears not to be in the source repository, so I can't make that step work.

Change-Id: I32e400593e8a39f582cc702df34eea7f6e9e722a
Reviewed-on: https://code.wireshark.org/review/2972
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-07-10 00:59:07 +00:00
Guy Harris 28719a4e4e More needed to get rid of "lib" in "libwsutil" on Windows.
Change-Id: Iffc12ce67a8245e96eac3cf253641a15385001a9
Reviewed-on: https://code.wireshark.org/review/2969
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-07-09 23:29:43 +00:00
Guy Harris 8481c43861 Fix more errors revealed by enum-to-integer conversion warnings.
Change-Id: Ib28af874cbac0623ed94e7558f3711e9a1b03a2d
Reviewed-on: https://code.wireshark.org/review/2874
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-07-06 02:26:11 +00:00
Guy Harris ab5d1cfa20 Squelch a warning.
Change-Id: Id27a6447dba9b6eda07933139a3f07edd71c8fd6
Reviewed-on: https://code.wireshark.org/review/2872
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-07-06 01:33:31 +00:00
Guy Harris 570d52a844 Pull the record processing into netmon_process_record().
That combines more common code from the read and seek-read code
paths.

Also, separate out the individual metadata record types, with a comment
for each, to simplify the process of supporting some or all of them in
the future.

Change-Id: Ic8ded397d9550ec6013c1f5f138333b1ef5c37e5
Reviewed-on: https://code.wireshark.org/review/2869
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-07-06 01:13:44 +00:00
Guy Harris 3f7725174d Fix an error caught by enum-conversion warnings.
(Strong typing is for weak minds.

Human minds are weak.

Therefore, strong typing is for human minds.)

Change-Id: I2a973b6168235d5d1c7f2a5f8ac79b97b963d846
Reviewed-on: https://code.wireshark.org/review/2863
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-07-05 19:32:56 +00:00
Guy Harris c8bcdd5271 Fix whitespace issues.
Change-Id: I69f84ca8b947be8e06005c82526559e3bc8f6387
Reviewed-on: https://code.wireshark.org/review/2861
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-07-05 18:49:23 +00:00
Guy Harris 599b880e4c Handle the UTC timestamps in NetMon 2.3 files.
This addresses part of, but not all of, the issues in bug ten thousand,
one hundred, and ninety:

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

(I'm spelling it out to make sure Gerrit doesn't think this change
*does* address all the issues in that bug, and mark it as RESOLVED
FIXED; I feel like I have to treat Gerrit as a dog or small child from
whom I'm trying to keep a secret - "honey, I'm taking the dog to the
vee eee tee".)

Change-Id: Ic234130c1ea84cfaf47901485dca775e168f71d0
Reviewed-on: https://code.wireshark.org/review/2859
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-07-05 18:46:57 +00:00
Peter Wu 16f8ba1bed catapult,irda: Fix ASAN crashes due to buffer underrun
The catapult dissector tripped on this random file I had. A quick look
at other dissectors which use a construct like "-1] *= '*\\[rn]" showed
packet-irda too, so fix that as well.

Change-Id: I4b5fadcacd0b09d0fb29bdefc3dd1f28aef9b593
Reviewed-on: https://code.wireshark.org/review/2802
Reviewed-by: Evan Huus <eapache@gmail.com>
Reviewed-by: Michael Mann <mmann78@netscape.net>
2014-07-03 13:02:24 +00:00
Michal Labedzki 099bc9342f Logcat: Remove commented code
"g_strlcpy" guarante that "dest" to be null-terminated.

Also cosmetic change from file_subtype to encap.

Change-Id: If188a08cf34dd9def4203404962571c273740636
Reviewed-on: https://code.wireshark.org/review/2718
Reviewed-by: Michal Labedzki <michal.labedzki@tieto.com>
2014-06-30 13:24:36 +00:00
Guy Harris 765405da3e Update a comment.
Also, make the block of code containing that comment intended
consistently with spaces.

Change-Id: I8e8eb346833662f15c53ece5869b12cc430bad11
Reviewed-on: https://code.wireshark.org/review/2661
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-06-25 21:06:03 +00:00
Guy Harris 474b90e358 Boost the maximum snapshot length to 262144, for USBPcap.
Change-Id: I104bd9d1519298a0e4ff818f1cf821df594b3491
Reviewed-on: https://code.wireshark.org/review/2658
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-06-25 20:43:04 +00:00
Guy Harris 8cde7a72d6 Boost the maximum packet size to 131072.
Libpcap 1.6/tcpdump 4.6 will support up to 131072, as the MTU on the
Linux loopback device is 65536 on at least some versions of the kernel,
and that doesn't count the fake Ethernet header, so the maximum packet
size is 65549; they went to the next power of 2 up.

Change-Id: Ibfc66d01ef8ef7387887a75c2b567159bb78ac0f
Reviewed-on: https://code.wireshark.org/review/2655
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-06-25 20:27:11 +00:00
Jeff Morriss 03f7a4bedc Remove wiretap/AUTHORS (after ensuring all names are present in the top-level AUTHORS file).
Change-Id: Ic3aa46c770f373541572e8507ec08b3439f3077f
Reviewed-on: https://code.wireshark.org/review/2645
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-06-25 14:43:16 +00:00
Jeff Morriss 5aa6cf9dd5 Update my email address in a couple more spots.
Change-Id: I787ae2651a8083bc3082e5cb85dbd849823a16ca
Reviewed-on: https://code.wireshark.org/review/2638
Reviewed-by: Jeff Morriss <jeff.morriss.ws@gmail.com>
2014-06-25 02:15:55 +00:00
Guy Harris 38e0ad08d3 Replace C++-style comments with "#if 0"/"#endif".
checkapi complains about C++-style comments, as some C compilers (IBM
XLC, for one) reject them by default, and gcc -pedantic might do so as
well.

Change-Id: I1719da03d2fed0fe97574e200dd79434b3d760cd
Reviewed-on: https://code.wireshark.org/review/2556
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-06-22 18:49:24 +00:00
Michal Labedzki 4a3d0b8684 Logcat: Fix dump formats
Some dump formats are not exactly what should be done,
so fix them and try to little improve them (mostly by space padding %-8s)

Change-Id: I8ee38479c848abc0a2eaff30ce733e4b60930ac4
Reviewed-on: https://code.wireshark.org/review/2550
Reviewed-by: Michal Labedzki <michal.labedzki@tieto.com>
2014-06-22 16:57:26 +00:00