From ddd145797c503022a25697b5363d1d15eeff22ee Mon Sep 17 00:00:00 2001 From: Shaolin Date: Sun, 2 Sep 2018 18:10:36 -0300 Subject: [PATCH 1/2] cmake: Add variable-length array checks VLA are more complex thus generating much more code. Alternatives can be used when VLA are needed. See: https://outflux.net/slides/2018/lss/danger.pdf - Pages 6, 7 and 8 --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5bac27c51..c136e00f5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -67,8 +67,8 @@ if(${CMAKE_C_COMPILER_ID} MATCHES "Clang" OR ${CMAKE_CXX_COMPILER_ID} MATCHES "C endif() if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANG) - set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wno-unused-function -Werror-implicit-function-declaration -Wno-missing-field-initializers ${CMAKE_CXX_FLAGS} -fno-strict-aliasing") - set(CMAKE_C_FLAGS "-Wall -Wextra -Wno-unused-function -Werror-implicit-function-declaration -Wno-missing-braces -Wno-missing-field-initializers ${CMAKE_C_FLAGS} -std=gnu99 -fno-strict-aliasing") + set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wvla -Wno-unused-function -Werror-implicit-function-declaration -Wno-missing-field-initializers ${CMAKE_CXX_FLAGS} -fno-strict-aliasing") + set(CMAKE_C_FLAGS "-Wall -Wextra -Wvla -Wno-unused-function -Werror-implicit-function-declaration -Wno-missing-braces -Wno-missing-field-initializers ${CMAKE_C_FLAGS} -std=gnu99 -fno-strict-aliasing") option(USE_LIBC++ "Use libc++ instead of libstdc++" ${APPLE}) if(USE_LIBC++) From 226d4cadf55964258170db953cf1eae8690ffdb9 Mon Sep 17 00:00:00 2001 From: Shaolin Date: Sun, 2 Sep 2018 18:53:13 -0300 Subject: [PATCH 2/2] libobs: Remove VLA in pulse monitoring backend --- libobs/audio-monitoring/pulse/pulseaudio-wrapper.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libobs/audio-monitoring/pulse/pulseaudio-wrapper.c b/libobs/audio-monitoring/pulse/pulseaudio-wrapper.c index fc41d7a2a..4bbbc9b8f 100644 --- a/libobs/audio-monitoring/pulse/pulseaudio-wrapper.c +++ b/libobs/audio-monitoring/pulse/pulseaudio-wrapper.c @@ -307,14 +307,15 @@ int_fast32_t pulseaudio_connect_playback(pa_stream *s, const char *name, return -1; size_t dev_len = strlen(name) - 8; - char device[dev_len]; + char *device = bzalloc(dev_len + 1); memcpy(device, name, dev_len); - device[dev_len] = '\0'; pulseaudio_lock(); int_fast32_t ret = pa_stream_connect_playback(s, device, attr, flags, NULL, NULL); pulseaudio_unlock(); + + bfree(device); return ret; }