level: Fix integer overflow when filling LevelMeta
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Fri, 29 Nov 2024 18:41:54 +0000 (13:41 -0500)
committerBackport Bot <gitlab-backport-bot@gstreamer-foundation.org>
Mon, 2 Dec 2024 22:51:12 +0000 (22:51 +0000)
commit506fd36c3b56869337a49225168fd2b12fba2645
treec04516e6df18789ada926adef27cbee9bdcae691
parent503979dedddff9c6d03d061e2c74ed133c34e19b
level: Fix integer overflow when filling LevelMeta

The level in GstAudioLevelMeta is represented as a signed 8bit value from 0 to
127 (with 127 meaning silence). When converting from double, make sure to clip
the value, this also prevent integer overflow in the conversion. This fixes an
issue where a lower then -127db is reported and random level with near silent
streams (due to integer overflow).

Fixes #4068

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8029>
subprojects/gst-plugins-good/gst/level/gstlevel.c