aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Rümelin <vr_qemu@t-online.de>2025-05-15 07:44:24 +0200
committerMarc-André Lureau <marcandre.lureau@redhat.com>2025-05-25 11:28:28 +0200
commit5ddd6c8dc849b4af44bd06840c9133d64e62c27c (patch)
tree9e1eecde1e9109905475fa72185e05f6abc97a13
parent9e9542a1771f5b44d198fbfa31b4b3fb947e46ce (diff)
downloadqemu-5ddd6c8dc849b4af44bd06840c9133d64e62c27c.zip
qemu-5ddd6c8dc849b4af44bd06840c9133d64e62c27c.tar.gz
qemu-5ddd6c8dc849b4af44bd06840c9133d64e62c27c.tar.bz2
audio: fix SIGSEGV in AUD_get_buffer_size_out()
As far as the emulated audio devices are concerned the pointer returned by AUD_open_out() is an opaque handle. This includes the NULL pointer. In this case, AUD_get_buffer_size_out() should return a sensible buffer size instead of triggering a segmentation fault. All other public AUD_*_out() and audio_*_out() functions handle this case. Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Volker Rümelin <vr_qemu@t-online.de> Message-Id: <20250515054429.7385-2-vr_qemu@t-online.de>
-rw-r--r--audio/audio.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/audio/audio.c b/audio/audio.c
index 41ee11a..70ef22b 100644
--- a/audio/audio.c
+++ b/audio/audio.c
@@ -905,6 +905,10 @@ size_t AUD_read(SWVoiceIn *sw, void *buf, size_t size)
int AUD_get_buffer_size_out(SWVoiceOut *sw)
{
+ if (!sw) {
+ return 0;
+ }
+
return sw->hw->samples * sw->hw->info.bytes_per_frame;
}