Commit Graph

125478 Commits

Author SHA1 Message Date
Michael Niedermayer
d32b387f2b avformat/rawutils: reject raw RGB frames that do not fit an AVPacket
Fixes: integer overflow
Fixes: out of array access
Fixes: payload.film
Fixes: czK1F83k3zvT
Found-by: Clouditera Security, Z.ai Security, NSFOCUS
(cherry picked from commit d3ad8a7fee)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
n9.0
2026-08-03 21:52:07 +02:00
Michael Niedermayer
3538578ed0 avcodec/nvenc: write AV1 timecode metadata in AV1 syntax
Fixes: https://code.ffmpeg.org/FFmpeg/FFmpeg/issues/20610

Tested on 5090 by claude

(cherry picked from commit afd059c340)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-03 21:51:42 +02:00
Michael Niedermayer
330b026202 avcodec/utils: add ff_alloc_timecode_metadata_av1()
(cherry picked from commit 5589dfd9bc)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-03 21:51:31 +02:00
Michael Niedermayer
00cc404767 avcodec/utils: factor the timecode fields out of ff_alloc_timecode_sei
(cherry picked from commit a290dec0bf)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-03 21:50:54 +02:00
Lynne
2493e213ea vulkan_encode_av1: set primary_ref_frame to a reference name, not a slot
primary_ref_frame is an index into the seven reference names, but the
code assigned it the reference's DPB slot. The two coincide only while
the reference sits in slot 0; once it rotates to slot 1,
referenceNameSlotIndices[primary_ref_frame] is -1, which is invalid,
and NVIDIA drivers lose the device. Inherited from vaapi_encode_av1,
where the same confusion is harmless as the raw frame header maps
every reference name to the same slot.

Have set_name_slot() return the name it picked and use that.

Fixes #20540.

(cherry picked from commit 0da8f2f4ee)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-03 21:49:27 +02:00
Michael Niedermayer
301508d126 avformat/mov: reject a trun sample count the input cannot hold
Fixes: OOM
Fixes: 525088811/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-5229499332231168
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
(cherry picked from commit ae0e0ba3c3)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-03 21:47:30 +02:00
Michael Niedermayer
2fb664dc33 RELEASE_NOTES: Based on the version from 8.0
Name suggested by 2 people on ML, all other suggestions had only 1 supporter

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-03 21:44:03 +02:00
Romain Beauxis
5da834256b avformat/mp3enc: fix underflow of the LAME encoder delay
AV_RL32() is unsigned, so a skip_samples value below 528 + 1 wraps around
instead of clamping to zero and is written out as a delay of 4095 samples.

(cherry picked from commit 146e0f7b79)
Signed-off-by: Romain Beauxis <romain.beauxis@gmail.com>
2026-08-03 09:44:01 -05:00
Christopher Decker
b0692eb266 avformat/os_support: fix return value of win32_rename
The return value of MoveFileExW was not being correctly interpreted,
see https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-movefileexw.

On Windows a failed rename over the file: protocol now surfaces as failed to rename file %s to %s:
Operation not permitted (ff_rename, libavformat/avio.c:867) plus an AVERROR(EPERM) return, where previously the muxer
reported success and the user was left with a missing or stale output file and no diagnostic. This affects the
write-to-temp-then-rename paths in hlsenc, dashenc, hdsenc, smoothstreamingenc, segment, and img2enc (e.g. HLS/DASH
playlist updates, -write_temp_file, segment list finalization).

Also, added unit tests to exercise the rename function.

Signed-off-by: Christopher Decker <chris.decker08@gmail.com>
(cherry picked from commit 94ff335d76)
Co-Authored-by: Fable 5
2026-08-02 06:24:00 +02:00
Lynne
439ac0cb4b vulkan_encode: fix leak and swallowed errors in init_base_units()
The encoded session parameters buffer was never freed, and both
GetEncodedVideoSessionParametersKHR error paths returned err, which
is always 0 at that point, reporting success on failure.

(cherry picked from commit b672ae3905)
Co-Authored-by: Fable 5
2026-08-02 06:24:00 +02:00
Raja-89
eebd95977f avfilter/dnn: fix async teardown race condition in all backends
When the filter graph is torn down early (e.g. at EOF with -frames:v),
the main thread calls dnn_free_model and destroys the request queue
while async inference threads may still be running. When a detached
thread finishes and tries to push its result back to the destroyed
queue, it triggers a segmentation fault.

Add ff_dnn_wait_requests() to dnn_backend_common which blocks
until all allocated request items (ctx->nireq) have been safely
returned to the request_queue. Call it from dnn_free_model in the
torch, tensorflow, openvino, and onnx backends before destroying the queue.

(cherry picked from commit b52c71e438)
Co-Authored-by: Fable 5
2026-08-02 06:24:00 +02:00
Michael Niedermayer
3c287af3af avcodec/tiff: reject inflate output shorter than the strip
Fixes: use of uninitialized memory
Fixes: tiff_short_deflate_heap_disclosure.tiff
Fixes: 1cRIkpUVMQtn
Found-by: Adrian Junge (vurlo)
(cherry picked from commit 2f234ea34c)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 06:09:21 +02:00
Steven Liu
2bf9f7b6e3 avformat/dashdec: check NULL pointer before use str_end_offset
fix issue: issues/23057 POC2

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
(cherry picked from commit 5e0ca682a4)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 06:03:04 +02:00
Steven Liu
e22de4c790 avformat/dashdec: check NULL pointer of av_strtok value before use it
fix issue: issues/23057 POC1
release seg memory and return NULL if av_strtok return NULL.

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
(cherry picked from commit 813c28d1ce)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 06:03:04 +02:00
Zhao Zhili
79e64c80bf avfilter/vf_scale_cuda: fix non-scaling format conversion
A format-only conversion leaves the auto use_filters value unresolved.
Regression since 5d0748243f.

Fix issue #23737

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
(cherry picked from commit c57660fb18)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 06:03:04 +02:00
Zhao Zhili
7bda4f9d15 fftools/opt_common: fix format string bug in print_program_info
FFMPEG_CONFIGURATION and FFMPEG_VERSION were concatenated into av_log
format strings, so any % in them was interpreted as a conversion
specifier and consumed unrelated varargs, causing undefined behavior
ranging from garbled output to a segfault on `ffmpeg -version`. Pass
both as %s arguments instead.

Fixes issue #23662.

The FFMPEG_CONFIGURATION fix is based on a patch by FinnRG; the
FFMPEG_VERSION case is fixed here as well.

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
(cherry picked from commit 160737cf0d)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 06:03:04 +02:00
Steven Liu
02edc0f612 avformat/dashdec: fix integer truncation in calc_max_seg_no()
When computing the segment count for a SegmentTimeline entry with
repeat="-1" (indefinite repeat, typical for live streams), the
expression:

  length_of_each_segment = pls->timelines[i]->duration /
                           pls->fragment_timescale;
  num = c->period_duration / length_of_each_segment;

performs two successive integer divisions.  The first division
truncates toward zero; if the segment duration in timescale ticks
is smaller than the timescale (duration < fragment_timescale),
length_of_each_segment becomes 0, and the second division triggers
a division by zero.

Fix this by using av_rescale(), which computes

  period_duration * fragment_timescale / duration

with 64-bit intermediate precision, avoiding both the truncation
and the zero-division risk.  If duration is 0 (invalid manifest),
explicitly fall back to first_seq_no instead of crashing.

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
(cherry picked from commit 0c0dd61b8f)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 06:03:03 +02:00
Zhao Zhili
86a468b8b9 swscale/x86: fix SIGILL in u8 SCALE on SSE4-only CPUs
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
(cherry picked from commit 22b08e8cc1)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 06:03:03 +02:00
Mirkó Visontai
ae981e6f0e avdevice/android_camera: fix OOB read in metadata parsing
ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS metadata is an
int32[n*4] array (one 4-tuple per stream config: format, width,
height, input/output flag). ACameraMetadata_const_entry.count is the
total number of int32_t elements, not the number of tuples. The loop
bound must be count/4 to avoid iterating past the end of the array.

Similarly, ACAMERA_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES is an
int32[n*2] array (min/max pairs). The loop bound must be count/2.

Without this fix, both loops over-iterate and read heap memory
beyond the metadata array bounds.

Signed-off-by: Mirko Visontai <mirkov@google.com>
(cherry picked from commit 1588bce21b)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 06:03:03 +02:00
James Almer
a5ef0da32a avformat/dashdec: don't stop at the first input EOF
The current logic would stop demuxing the entire manifest once the first Representation
returned EOF, which could result in plenty of packets from other Representations being
lost.

Signed-off-by: James Almer <jamrial@gmail.com>
(cherry picked from commit d9da090b1d)
2026-08-02 00:14:22 -03:00
James Almer
95fe88589a avformat/iamf_parse: check that num_sub_mixes and num_audio_elements in Mix Presentations are not zero
As required by the spec in Section 3.7

Signed-off-by: James Almer <jamrial@gmail.com>
(cherry picked from commit 1b946a3abd)
2026-08-02 00:13:26 -03:00
James Almer
5eac4c5e3e avformat/iamf_parse: bound the output mix gain duration by the audio elements
Based on a patch by Michael Niedermayer

Fixes: unbounded allocation
Fixes: poc_output_mix_config_dos.iamf
Fixes: 387qWpjUgeKH
Found-by: Duong Tran Thai (CyStack)
Signed-off-by: James Almer <jamrial@gmail.com>
(cherry picked from commit d2476bfd2b)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:34 +02:00
Michael Niedermayer
6af6fef641 avcodec/cbs_h266: size vps_direct_ref_layer_flag for the full layer range
Fixes: out of array access
Fixes: poc_vvc_vps.266
Fixes: 1z6RugPwxp39
Found-by: TainAn Bill
(cherry picked from commit 4f8043e658)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:33 +02:00
Michael Niedermayer
8b36b1668f avcodec/vulkan/ffv1_dec_setup: act on the slice header rejection
(cherry picked from commit 533a3c254d)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:33 +02:00
Michael Niedermayer
9f363dd22d avcodec/ffv1dec: reject a remap that produces zero entries
(cherry picked from commit 56743898d2)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:33 +02:00
Michael Niedermayer
b36c728ba8 avcodec/ffv1dec: mark the slice damaged when its remap fails
(cherry picked from commit 8ab8b4fabe)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:33 +02:00
Michael Niedermayer
caf5fdff49 avcodec/vulkan/ffv1_dec_setup: bound the fltmap write
(cherry picked from commit 946272b79a)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:33 +02:00
Michael Niedermayer
788e3985f8 avcodec/vulkan/ffv1_dec_setup: test mul_count as unsigned
(cherry picked from commit c91b50659b)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:33 +02:00
Michael Niedermayer
4920066126 avcodec/vulkan/ffv1_dec_setup: reject a remap that produces zero entries
(cherry picked from commit cc82fdfbd4)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:32 +02:00
Michael Niedermayer
0710198038 avcodec/pgssubdec: always give an output rect a palette
Fixes: NULL pointer dereference
Fixes: poc_null_deref.sup
Fixes: Fobbab5Vtlr3
Found-by: VRI with 图龙锋
(cherry picked from commit 5d4d3bdc61)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:32 +02:00
Dan Dennedy
90243e3985 scale_d3d11: Fix hw_frame_ctx reference leak
This fixes #20995. The reference is taken twice and assigned to the same pointer (see above in the same function). Only the latter is needed.

(cherry picked from commit 66a8c37582)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:32 +02:00
Michael Niedermayer
16b2049d4d avcodec/cfhd: reject transform-2 output wider than the plane
Fixes: out of array access
Fixes: cfhd_transform2_output_width_oob.avi
Fixes: MimvoaEVpKow
Found-by: Adrian Junge (vurlo)
(cherry picked from commit db05df9d13)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:32 +02:00
Abdessamie
63cfa99169 avformat/rtsp: clear authentication on cross-origin redirects
RTSP redirects retain URL credentials and authentication state when a
Location URI changes to another origin. This can forward reusable
credentials to a server with a different scheme, host, or port.

Clear the stored credentials and authentication state when the redirect
crosses an origin boundary. Preserve them for same-origin redirects.

Fixes: cross-origin credential disclosure
Fixes: rtsp_redirect_auth_leak_poc.py
Fixes: VaKaPOnfN02z
(cherry picked from commit a441a2eb38)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:32 +02:00
Michael Niedermayer
9bece37c53 avcodec/dovi_rpuenc: normalize vdr_dm_metadata_present to 0/1
(cherry picked from commit 2c18311d59)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:31 +02:00
Kenan Alghythee
820b0a2182 avcodec/dovi_rpuenc: validate vdr_rpu_id from the input metadata
Fixes: out of array access
Fixes: SUcVEyk7r3Gc
Found-by: Kenan Alghythee <kalghy2@uic.edu>
(cherry picked from commit 372a611913)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:31 +02:00
Kenan Alghythee
9466148a32 avcodec/bsf/dovi_rpu: handle update_rpu() returning no RPU
Fixes: out of array access
Fixes: SUcVEyk7r3Gc
Found-by: Kenan Alghythee <kalghy2@uic.edu>
(cherry picked from commit 534f16d866)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:31 +02:00
Michael Niedermayer
ad25ca73b5 avcodec/dovi_rpudec: bound num_x/y_partitions
Fixes: out of array access
Fixes: SUcVEyk7r3Gc
Found-by: Kenan Alghythee <kalghy2@uic.edu>
(cherry picked from commit 79e10e5196)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:31 +02:00
Kenan Alghythee
5d82a3c369 avcodec/dovi_rpuenc: validate the data mapping before generation
Fixes: out of array access
Fixes: SUcVEyk7r3Gc
Found-by: Kenan Alghythee <kalghy2@uic.edu>
(cherry picked from commit f1ed338541)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:31 +02:00
Michael Niedermayer
3b962c40dd avfilter/af_arnndn: pad the DCT input buffers to the read length
Fixes: out of array access
Fixes: SUcVEyk7r3Gc
Found-by: Kenan Alghythee <kalghy2@uic.edu>
(cherry picked from commit e38b5d15bd)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:31 +02:00
Michael Niedermayer
031213bb6c doc/nut.texi: point at the latest spec in the git repository
subversion in 2026 is a bit odd

(cherry picked from commit 05be98e3a2)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:30 +02:00
Michael Niedermayer
dd22741d71 avformat/mov: bound sgpd sync entry_count by the atom size
Fixes: unbounded allocation
Fixes: ffmpeg-sgpd-sync-entry-count-alloc.mp4
Fixes: 4f7OaHqbUKh2
Found-by: Brian Lee, Youngjoon Kim (Georgia Tech SSLab)
(cherry picked from commit a100d346da)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:30 +02:00
Michael Niedermayer
a5fe21a1a4 avcodec/rscc: do not leave uninitilized data when the input is too short
Fixes: use of uninitialized memory
Fixes: rscc_short_deflate_heap_disclosure.avi
Fixes: plB80py3i3Bu
Found-by: Adrian Junge (vurlo)
(cherry picked from commit cd1f545cf2)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:30 +02:00
Michael Niedermayer
02fc47e13f avcodec/dvbsub_parser: avoid signed overflow in the capacity check
Fixes: signed integer overflow
Fixes: out of array access
Fixes: poc.wtv
Fixes: fJeEU9JwKwsR
Found-by: Adrian Junge (vurlo)
(cherry picked from commit 93f2a525ec)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:30 +02:00
Omkhar Arasaratnam
9718986bf0 avformat/tls_openssl: bind peer identity for numeric-IP verify
tls_open() installed a peer-identity target only when the URL host was
non-numeric. For a numeric-IP target the whole block was skipped, so
with verify=1 OpenSSL validated the chain to a trusted CA but bound no
identity, and any publicly-trusted certificate for any name was accepted
(e.g. tls://203.0.113.10?verify=1).

Run the identity block for every non-listening connection. Classify
s->host with the same getaddrinfo(AI_NUMERICHOST) rule tls.c uses. A
numeric host is pinned to the certificate's iPAddress SAN by handing
OpenSSL the parsed binary address via X509_VERIFY_PARAM_set1_ip();
everything else, including a verifyhost=<name> override, binds by name
via SSL_set1_host(). Passing the binary address rather than re-probing
the ASCII form pins legacy numeric spellings such as 2130706433 as IPs
instead of letting them fall back to hostname matching. SNI is still
suppressed for numeric transport hosts (RFC 6066 sec. 3) via
s->numerichost.

The identity target is installed unconditionally for non-listening
connections; whether the certificate is actually verified stays
controlled separately by SSL_CTX_set_verify() under s->verify, so
disabling verification keeps the prior behaviour. Sets AVERROR_EXTERNAL
with an explicit log line on failure.

dtls_open() sets s->is_dtls and then calls tls_open(), so DTLS client
connections run through the same identity block and are covered here.

Found-by: Claude (Anthropic). Human-verified and reported by
Omkhar Arasaratnam <omkhar@linkedin.com>.
Signed-off-by: Omkhar Arasaratnam <omkhar@linkedin.com>
(cherry picked from commit 83c6922826)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:30 +02:00
Michael Niedermayer
4af563686f avformat/codec2: avoid integer overflow in packet size and duration
Fixes: signed integer overflow
Fixes: 2jy_poc_codec2.zip / poc_codec2.raw
Fixes: jOQASNnOm6O7
Found-by: Jiale Yao <yaojiale02@163.com>
(cherry picked from commit 2b7e501242)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:29 +02:00
Kenan Alghythee
3257728c61 avfilter/vf_xpsnr: avoid a zero block size on small frames
Fixes: division by zero
Fixes: SUcVEyk7r3Gc
Found-by: Kenan Alghythee <kalghy2@uic.edu>
(cherry picked from commit 06fd4fd0e7)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:29 +02:00
Kenan Alghythee
8553e6ef57 avcodec/cbs_av1: pad the ITU-T T.35 payload buffer
Fixes: out of array access
Fixes: SUcVEyk7r3Gc
Found-by: Kenan Alghythee <kalghy2@uic.edu>
(cherry picked from commit e2bc6d88cd)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:29 +02:00
Michael Niedermayer
c22667d0fd avcodec/screenpresso: reject deflate output shorter than the frame
Fixes: use of uninitialized memory
Fixes: screenpresso_short_zlib_heap_disclosure.avi
Fixes: ksUBwBOjJodq
Found-by: Adrian Junge (vurlo)
(cherry picked from commit 7058900614)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:29 +02:00
Steven Liu
01044d0453 avformat/hls: Enforce protocol checks when opening child playlists
Fix: vulnerability:019f3b84-903b-75fb-a8de-fad1c2d7e99c
The parse_playlist() path for opening a new child playlist (in == NULL)
directly called c->ctx->io_open(), bypassing the protocol whitelist and
file-extension checks that open_url() enforces. This allowed child URLs
from a master playlist to use protocols other than file/http/data or to
have disallowed extensions.

Route the !in branch through open_url() so that all child playlists are
subject to the same security policy as segment URLs.

Fixes a security bypass in HLS master playlist parsing.

Found-by: depthfirst
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
(cherry picked from commit 23602df9cd)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:29 +02:00
Steven Liu
f6c97aeadc avformat/hlsenc: Fix heap buffer overflow in parse_playlist()
Fix: vulnerability:019f3b84-903b-75fb-a8de-fe6f84d6bc32

When parsing IV=0x... followed by a comma, end - ptr was passed directly
to av_strlcpy() as the destination size. Since iv_string is only 33 bytes
(KEYSIZE*2 + 1), a long IV token could overflow into adjacent heap data.

Use FFMIN(end - ptr + 1, sizeof(buf)) to cap the copy size to the actual
buffer size. Apply the same fix to key_uri parsing for consistency.

Fixes a heap buffer overflow in append_list mode when reading an existing
playlist with a crafted IV or URI token length.

Found-by: depthfirst
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
(cherry picked from commit 275e217b10)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-08-02 02:47:28 +02:00