wrong pointer passed to variadic wp_spa_pod_parser_get_valist
module-mixer-api.c:node_info_fill
has
if (!wp_spa_pod_get_object (props, NULL,
"mute", "b", &info->mute,
"channelVolumes", "P", &channelVolumes,
NULL))
// ...
wp_spa_pod_get_object (props, NULL,
"channelMap", "?P", &channelMap,
"volumeBase", "?f", &info->base,
"volumeStep", "?f", &info->step,
"volume", "?f", &info->svolume,
"monitorVolumes", "?P", &monitorVolumes,
"monitorMute", "?b", &info->monitorMute,
NULL);
where node_info::{mute,monitorMute}
both have the type bool
but wp_spa_pod_get_object()
(-> wp_spa_pod_parser_get_valist()
) expects a gboolean *
for "b"
since bc76cb7d.
$ UBSAN_OPTIONS=print_stacktrace=1 wpctl settings
../subprojects/wireplumber/lib/wp/spa-pod.c:2798:34: runtime error: store to misaligned address 0x51800000179d for type 'gboolean', which requires 4 byte alignment
0x51800000179d: note: pointer points here
00 00 00 00 00 00 00 00 00 80 3f 00 00 80 3f 00 00 80 37 00 00 00 00 00 00 00 00 00 00 00 00 00
^
#0 0x731886aaf44f in wp_spa_pod_parser_get_valist ../subprojects/wireplumber/lib/wp/spa-pod.c:2798
#1 0x731886aa58b9 in wp_spa_pod_get_object_valist ../subprojects/wireplumber/lib/wp/spa-pod.c:1664
#2 0x731886aa563c in wp_spa_pod_get_object ../subprojects/wireplumber/lib/wp/spa-pod.c:1644
#3 0x731882f259b4 in node_info_fill ../subprojects/wireplumber/modules/module-mixer-api.c:149
[...]