From 725662d6dbfbbc536bb4006fbd93bcc6e82c8a34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C5=91v=C3=A1g=C3=B3=2C=20Zolt=C3=A1n?= Date: Mon, 26 Aug 2019 21:59:01 +0200 Subject: [PATCH 1/2] audio: fix invalid malloc size in audio_create_pdos MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The code used sizeof(AudiodevAlsaPerDirectionOptions) instead of the appropriate per direction options for the audio backend. If the size of the actual audiodev's per direction options are larger than alsa's, it could cause a buffer overflow. However, alsa has three fields in per direction options: a string, an uint32 and a bool. Oss has the same fields, coreaudio has a single uint32, paaudio has a string and an uint32, all other backends only use the common options, so currently no per direction options struct should be larger than alsa's. Signed-off-by: Kővágó, Zoltán Message-Id: <7808bc816ba7da8b8de8a214713444d85f7af3c6.1566847960.git.DirtY.iCE.hu@gmail.com> Signed-off-by: Gerd Hoffmann --- audio/audio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/audio/audio.c b/audio/audio.c index 7d715332c9..ae335dbebb 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1685,7 +1685,7 @@ void audio_create_pdos(Audiodev *dev) } \ if (!dev->u.driver.has_out) { \ dev->u.driver.out = g_malloc0( \ - sizeof(AudiodevAlsaPerDirectionOptions)); \ + sizeof(Audiodev##pdo_name##PerDirectionOptions)); \ dev->u.driver.has_out = true; \ } \ break From 4b3b7793e18e1e3edb90bbc21112e875f9ff826d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C5=91v=C3=A1g=C3=B3=2C=20Zolt=C3=A1n?= Date: Mon, 26 Aug 2019 21:59:02 +0200 Subject: [PATCH 2/2] audio: omitting audiodev= parameter is only deprecated MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Unfortunately, changes introduced in af2041ed2d "audio: audiodev= parameters no longer optional when -audiodev present" breaks backward compatibility. This patch changes the error into a deprecation warning. Signed-off-by: Kővágó, Zoltán Message-id: 02d4328c33455742d01e0b62395013e95293c3ba.1566847960.git.DirtY.iCE.hu@gmail.com Signed-off-by: Gerd Hoffmann --- audio/audio.c | 8 ++++---- qemu-deprecated.texi | 7 +++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/audio/audio.c b/audio/audio.c index ae335dbebb..e99fcd0694 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1412,8 +1412,9 @@ static AudioState *audio_init(Audiodev *dev, const char *name) drvname = AudiodevDriver_str(dev->driver); } else if (!QTAILQ_EMPTY(&audio_states)) { if (!legacy_config) { - dolog("You must specify an audiodev= for the device %s\n", name); - exit(1); + dolog("Device %s: audiodev default parameter is deprecated, please " + "specify audiodev=%s\n", name, + QTAILQ_FIRST(&audio_states)->dev->id); } return QTAILQ_FIRST(&audio_states); } else { @@ -1548,8 +1549,7 @@ CaptureVoiceOut *AUD_add_capture( if (!s) { if (!legacy_config) { - dolog("You must specify audiodev when trying to capture\n"); - return NULL; + dolog("Capturing without setting an audiodev is deprecated\n"); } s = audio_init(NULL, NULL); } diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi index 00a4b6f350..9d74a1cfc0 100644 --- a/qemu-deprecated.texi +++ b/qemu-deprecated.texi @@ -72,6 +72,13 @@ backend settings instead of environment variables. To ease migration to the new format, the ``-audiodev-help'' option can be used to convert the current values of the environment variables to ``-audiodev'' options. +@subsection Creating sound card devices and vnc without audiodev= property (since 4.2) + +When not using the deprecated legacy audio config, each sound card +should specify an @code{audiodev=} property. Additionally, when using +vnc, you should specify an @code{audiodev=} propery if you plan to +transmit audio through the VNC protocol. + @subsection -mon ...,control=readline,pretty=on|off (since 4.1) The @code{pretty=on|off} switch has no effect for HMP monitors, but is