diff options
author | feld <feld@feld.me> | 2024-01-13 04:35:32 +0000 |
---|---|---|
committer | feld <feld@feld.me> | 2024-01-13 04:35:32 +0000 |
commit | 9cc46c55382d2e8960016b52f72ad63b0e55dd16 (patch) | |
tree | 92bcec1740278a2b0323859ea42ff9dbfdde6a10 | |
parent | d4b889783c9ab8e73ba02b9c3bf1e36350de7b3c (diff) | |
parent | 50edef5bc13d0407aaaf26c951ce7a4a8cd4db58 (diff) | |
download | pleroma-9cc46c55382d2e8960016b52f72ad63b0e55dd16.tar.gz pleroma-9cc46c55382d2e8960016b52f72ad63b0e55dd16.zip |
Merge branch 'qtfaststart-fix' into 'develop'
Fix MediaProxy crashing on some videos
See merge request pleroma/pleroma!4024
-rw-r--r-- | changelog.d/qtfaststart.fix | 1 | ||||
-rw-r--r-- | lib/pleroma/helpers/qt_fast_start.ex | 25 |
2 files changed, 16 insertions, 10 deletions
diff --git a/changelog.d/qtfaststart.fix b/changelog.d/qtfaststart.fix new file mode 100644 index 000000000..66d2569f2 --- /dev/null +++ b/changelog.d/qtfaststart.fix @@ -0,0 +1 @@ +MediaProxy Preview failures prevented when encountering certain video files diff --git a/lib/pleroma/helpers/qt_fast_start.ex b/lib/pleroma/helpers/qt_fast_start.ex index 5711c7162..919fec84a 100644 --- a/lib/pleroma/helpers/qt_fast_start.ex +++ b/lib/pleroma/helpers/qt_fast_start.ex @@ -40,16 +40,21 @@ defmodule Pleroma.Helpers.QtFastStart do got_mdat, acc ) do - full_size = (size - 8) * 8 - <<data::bits-size(full_size), rest::bits>> = rest - - acc = [ - {fourcc, pos, pos + size, size, - <<size::integer-big-size(32), fourcc::bits-size(32), data::bits>>} - | acc - ] - - fix(rest, pos + size, got_moov || fourcc == "moov", got_mdat || fourcc == "mdat", acc) + try do + full_size = (size - 8) * 8 + <<data::bits-size(full_size), rest::bits>> = rest + + acc = [ + {fourcc, pos, pos + size, size, + <<size::integer-big-size(32), fourcc::bits-size(32), data::bits>>} + | acc + ] + + fix(rest, pos + size, got_moov || fourcc == "moov", got_mdat || fourcc == "mdat", acc) + rescue + _ -> + :abort + end end defp fix(<<>>, _pos, _, _, acc) do |