From 3e58e1987c318399d02ebdd683c8b68b0529b08a Mon Sep 17 00:00:00 2001 From: uvjustin <46082645+uvjustin@users.noreply.github.com> Date: Wed, 19 Jul 2023 15:06:04 +0800 Subject: [PATCH] Avoid infinite loop on corrupt stream recording (#96881) * Avoid infinite loop on corrupt stream recording * Update tests --- homeassistant/components/stream/fmp4utils.py | 2 +- tests/components/stream/test_worker.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/stream/fmp4utils.py b/homeassistant/components/stream/fmp4utils.py index 5ec27a1768c..7276e7a0d9b 100644 --- a/homeassistant/components/stream/fmp4utils.py +++ b/homeassistant/components/stream/fmp4utils.py @@ -151,7 +151,7 @@ def find_moov(mp4_io: BufferedIOBase) -> int: while 1: mp4_io.seek(index) box_header = mp4_io.read(8) - if len(box_header) != 8: + if len(box_header) != 8 or box_header[0:4] == b"\x00\x00\x00\x00": raise HomeAssistantError("moov atom not found") if box_header[4:8] == b"moov": return index diff --git a/tests/components/stream/test_worker.py b/tests/components/stream/test_worker.py index 0dc67c37403..e0152190d90 100644 --- a/tests/components/stream/test_worker.py +++ b/tests/components/stream/test_worker.py @@ -245,7 +245,7 @@ class FakePyAvBuffer: # Forward to appropriate FakeStream packet.stream.mux(packet) # Make new init/part data available to the worker - self.memory_file.write(b"\x00\x00\x00\x00moov") + self.memory_file.write(b"\x00\x00\x00\x08moov") def close(self): """Close the buffer."""