Skip to content

acp: avoid copying structure into itself

George Kiagiadakis requested to merge gkiagia/pipewire:acp_sync_mixer into master

sync_mixer() calls d->set_volume(d, &d->real_volume); which makes v and &dev->real_volume point to the same memory area and valgrind complains:

Source and destination overlap in memcpy(0xcc53e2c, 0xcc53e2c, 260)
   at 0x488CFA0: __GI_memcpy (vg_replace_strmem.c:1121)
   by 0xBB0803F: set_volume (acp.c:1143)
   by 0xBB0EDCB: acp_device_set_port (acp.c:1897)
   by 0xBA9CD87: impl_set_param (alsa-acp-device.c:757)

because the compiler apparently implicitly converts this into a memcpy() and memcpy(3) explicitly says "The memory areas must not overlap."

Edited by George Kiagiadakis

Merge request reports