[vlc-commits] [Git][videolan/vlc][master] 2 commits: input: rework input_ConfigVarInit()
Steve Lhomme (@robUx4)
gitlab at videolan.org
Tue Feb 11 08:33:31 UTC 2025
Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
a3bc5398 by Thomas Guillem at 2025-02-11T08:16:28+00:00
input: rework input_ConfigVarInit()
Rename it to vlc_object_InitInputConfig(), make it usable from any
vlc_object_t.
- - - - -
adfdbcb0 by Thomas Guillem at 2025-02-11T08:16:28+00:00
demux-run: create missing variables
Fixes the following assert:
```
vlc-demux-dec-libfuzzer: ../../src/config/core.c:101: float config_GetFloat(const char *): Assertion `param != NULL' failed.
==4087818== ERROR: libFuzzer: deadly signal
#0 0x55f272bd30a8 in __sanitizer_print_stack_trace (/home/tom/work/git/vlc/build-fuzzer/test/vlc-demux-dec-libfuzzer+0x700a8) (BuildId: cc2451ad018f3d0c0fa0f19e5214505d17cca912)
#1 0x55f272ba5c7c in fuzzer::PrintStackTrace() (/home/tom/work/git/vlc/build-fuzzer/test/vlc-demux-dec-libfuzzer+0x42c7c) (BuildId: cc2451ad018f3d0c0fa0f19e5214505d17cca912)
#2 0x55f272b8b087 in fuzzer::Fuzzer::CrashCallback() (/home/tom/work/git/vlc/build-fuzzer/test/vlc-demux-dec-libfuzzer+0x28087) (BuildId: cc2451ad018f3d0c0fa0f19e5214505d17cca912)
#3 0x7f42a3163cdf (/lib/x86_64-linux-gnu/libc.so.6+0x3fcdf) (BuildId: 3bc74dbb72522bb47e0d899e5615140b044a5b40)
#4 0x7f42a31b7c8b in __pthread_kill_implementation nptl/pthread_kill.c:43:17
#5 0x7f42a3163c41 in raise signal/../sysdeps/posix/raise.c:26:13
#6 0x7f42a314c4ef in abort stdlib/abort.c:79:7
#7 0x7f42a314c417 in __assert_fail_base assert/assert.c:94:3
#8 0x7f42a315c551 in __assert_fail assert/assert.c:103:3
#9 0x7f42a34d0b45 in config_GetFloat /home/tom/work/git/vlc/build-fuzzer/src/../../src/config/core.c:101:5
#10 0x7f42a35aa158 in var_Inherit /home/tom/work/git/vlc/build-fuzzer/src/../../src/misc/variables.c:1055:30
#11 0x7f42a35a9e95 in var_Create /home/tom/work/git/vlc/build-fuzzer/src/../../src/misc/variables.c:354:9
#12 0x7f42996de99a in var_CreateGetFloat /home/tom/work/git/vlc/build-fuzzer/modules/../../include/vlc_variables.h:582:5
#13 0x7f42996de99a in Open /home/tom/work/git/vlc/build-fuzzer/modules/../../modules/demux/subtitle.c:331:13
#14 0x7f42a350ba68 in demux_Probe /home/tom/work/git/vlc/build-fuzzer/src/../../src/input/demux.c:112:15
#15 0x7f42a34dca79 in vlc_module_load /home/tom/work/git/vlc/build-fuzzer/src/../../src/modules/modules.c:230:15
#16 0x7f42a350b501 in demux_NewAdvanced /home/tom/work/git/vlc/build-fuzzer/src/../../src/input/demux.c:196:20
#17 0x7f42a350aecf in demux_New /home/tom/work/git/vlc/build-fuzzer/src/../../src/input/demux.c:77:12
#18 0x55f272bd37bc in demux_process_stream /home/tom/work/git/vlc/build-fuzzer/test/../../test/src/input/demux-run.c:294:22
#19 0x55f272bd358f in LLVMFuzzerTestOneInput /home/tom/work/git/vlc/build-fuzzer/test/../../test/vlc-demux-libfuzzer.c:54:5
#20 0x55f272b8c65a in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) (/home/tom/work/git/vlc/build-fuzzer/test/vlc-demux-dec-libfuzzer+0x2965a) (BuildId: cc2451ad018f3d0c0fa0f19e5214505d17cca912)
#21 0x55f272b96472 in fuzzer::Fuzzer::CrashResistantMergeInternalStep(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool) (/home/tom/work/git/vlc/build-fuzzer/test/vlc-demux-dec-libfuzzer+0x33472) (BuildId: cc2451ad018f3d0c0fa0f19e5214505d17cca912)
#22 0x55f272b7a8a1 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) (/home/tom/work/git/vlc/build-fuzzer/test/vlc-demux-dec-libfuzzer+0x178a1) (BuildId: cc2451ad018f3d0c0fa0f19e5214505d17cca912)
#23 0x55f272ba67e6 in main (/home/tom/work/git/vlc/build-fuzzer/test/vlc-demux-dec-libfuzzer+0x437e6) (BuildId: cc2451ad018f3d0c0fa0f19e5214505d17cca912)
#24 0x7f42a314dd67 in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#25 0x7f42a314de24 in __libc_start_main csu/../csu/libc-start.c:360:3
#26 0x55f272b6ed30 in _start (/home/tom/work/git/vlc/build-fuzzer/test/vlc-demux-dec-libfuzzer+0xbd30) (BuildId: cc2451ad018f3d0c0fa0f19e5214505d17cca912)
```
- - - - -
5 changed files:
- src/input/input.c
- src/input/input_internal.h
- src/input/var.c
- test/Makefile.am
- test/src/input/demux-run.c
Changes:
=====================================
src/input/input.c
=====================================
@@ -331,7 +331,10 @@ input_thread_t * input_Create( vlc_object_t *p_parent, input_item_t *p_item,
vlc_interrupt_init(&priv->interrupt);
/* Create Object Variables for private use only */
- input_ConfigVarInit( p_input );
+
+ vlc_object_InitInputConfig(VLC_OBJECT(p_input),
+ input_priv(p_input)->type != INPUT_TYPE_PREPARSING,
+ true);
priv->b_low_delay = var_InheritBool( p_input, "low-delay" );
priv->i_jitter_max = VLC_TICK_FROM_MS(var_InheritInteger( p_input, "clock-jitter" ));
=====================================
src/input/input_internal.h
=====================================
@@ -700,7 +700,8 @@ void input_ExtractAttachmentAndCacheArt( input_thread_t *, const char *name );
/* var.c */
-void input_ConfigVarInit ( input_thread_t * );
+void vlc_object_InitInputConfig(vlc_object_t *obj,
+ bool playback, bool do_inherit);
/* Subtitles */
int subtitles_Detect( input_thread_t *, char *, const char *, input_item_slave_t ***, int * );
=====================================
src/input/var.c
=====================================
@@ -36,93 +36,95 @@
* input_ConfigVarInit:
* Create all config object variables
*****************************************************************************/
-void input_ConfigVarInit ( input_thread_t *p_input )
+void vlc_object_InitInputConfig(vlc_object_t *obj,
+ bool playback, bool do_inherit)
{
/* Create Object Variables for private use only */
+ int inherit_flag = do_inherit ? VLC_VAR_DOINHERIT : 0;
- if( input_priv(p_input)->type != INPUT_TYPE_PREPARSING )
+ if (playback)
{
- var_Create( p_input, "video", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
- var_Create( p_input, "audio", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
- var_Create( p_input, "spu", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
-
- var_Create( p_input, "video-track", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );
- var_Create( p_input, "audio-track", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );
- var_Create( p_input, "sub-track", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );
-
- var_Create( p_input, "audio-language",
- VLC_VAR_STRING|VLC_VAR_DOINHERIT );
- var_Create( p_input, "sub-language",
- VLC_VAR_STRING|VLC_VAR_DOINHERIT );
- var_Create( p_input, "menu-language",
- VLC_VAR_STRING|VLC_VAR_DOINHERIT );
-
- var_Create( p_input, "video-track-id",
- VLC_VAR_STRING|VLC_VAR_DOINHERIT );
- var_Create( p_input, "audio-track-id",
- VLC_VAR_STRING|VLC_VAR_DOINHERIT );
- var_Create( p_input, "sub-track-id",
- VLC_VAR_STRING|VLC_VAR_DOINHERIT );
-
- var_Create( p_input, "sub-file", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
- var_Create( p_input, "sub-autodetect-file", VLC_VAR_BOOL |
- VLC_VAR_DOINHERIT );
- var_Create( p_input, "sub-autodetect-path", VLC_VAR_STRING |
- VLC_VAR_DOINHERIT );
- var_Create( p_input, "sub-autodetect-fuzzy", VLC_VAR_INTEGER |
- VLC_VAR_DOINHERIT );
-
- var_Create( p_input, "sout", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
- var_Create( p_input, "sout-all", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
- var_Create( p_input, "sout-audio", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
- var_Create( p_input, "sout-video", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
- var_Create( p_input, "sout-spu", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
- var_Create( p_input, "sout-keep", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
-
- var_Create( p_input, "input-repeat",
- VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );
- var_Create( p_input, "start-time", VLC_VAR_FLOAT|VLC_VAR_DOINHERIT );
- var_Create( p_input, "stop-time", VLC_VAR_FLOAT|VLC_VAR_DOINHERIT );
- var_Create( p_input, "run-time", VLC_VAR_FLOAT|VLC_VAR_DOINHERIT );
- var_Create( p_input, "input-fast-seek", VLC_VAR_BOOL|VLC_VAR_DOINHERIT );
-
- var_Create( p_input, "input-slave",
- VLC_VAR_STRING | VLC_VAR_DOINHERIT );
-
- var_Create( p_input, "audio-desync",
- VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
- var_Create( p_input, "cr-average",
- VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
- var_Create( p_input, "clock-synchro",
- VLC_VAR_INTEGER | VLC_VAR_DOINHERIT);
-
- var_Create( p_input, "bookmarks", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
- var_Create( p_input, "programs", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
- var_Create( p_input, "program", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
- var_Create( p_input, "rate", VLC_VAR_FLOAT | VLC_VAR_DOINHERIT );
+ var_Create(obj, "video", VLC_VAR_BOOL | inherit_flag);
+ var_Create(obj, "audio", VLC_VAR_BOOL | inherit_flag);
+ var_Create(obj, "spu", VLC_VAR_BOOL | inherit_flag);
+
+ var_Create(obj, "video-track", VLC_VAR_INTEGER|inherit_flag);
+ var_Create(obj, "audio-track", VLC_VAR_INTEGER|inherit_flag);
+ var_Create(obj, "sub-track", VLC_VAR_INTEGER|inherit_flag);
+
+ var_Create(obj, "audio-language",
+ VLC_VAR_STRING|inherit_flag);
+ var_Create(obj, "sub-language",
+ VLC_VAR_STRING|inherit_flag);
+ var_Create(obj, "menu-language",
+ VLC_VAR_STRING|inherit_flag);
+
+ var_Create(obj, "video-track-id",
+ VLC_VAR_STRING|inherit_flag);
+ var_Create(obj, "audio-track-id",
+ VLC_VAR_STRING|inherit_flag);
+ var_Create(obj, "sub-track-id",
+ VLC_VAR_STRING|inherit_flag);
+
+ var_Create(obj, "sub-file", VLC_VAR_STRING | inherit_flag);
+ var_Create(obj, "sub-autodetect-file", VLC_VAR_BOOL |
+ inherit_flag);
+ var_Create(obj, "sub-autodetect-path", VLC_VAR_STRING |
+ inherit_flag);
+ var_Create(obj, "sub-autodetect-fuzzy", VLC_VAR_INTEGER |
+ inherit_flag);
+
+ var_Create(obj, "sout", VLC_VAR_STRING | inherit_flag);
+ var_Create(obj, "sout-all", VLC_VAR_BOOL | inherit_flag);
+ var_Create(obj, "sout-audio", VLC_VAR_BOOL | inherit_flag);
+ var_Create(obj, "sout-video", VLC_VAR_BOOL | inherit_flag);
+ var_Create(obj, "sout-spu", VLC_VAR_BOOL | inherit_flag);
+ var_Create(obj, "sout-keep", VLC_VAR_BOOL | inherit_flag);
+
+ var_Create(obj, "input-repeat",
+ VLC_VAR_INTEGER|inherit_flag);
+ var_Create(obj, "start-time", VLC_VAR_FLOAT|inherit_flag);
+ var_Create(obj, "stop-time", VLC_VAR_FLOAT|inherit_flag);
+ var_Create(obj, "run-time", VLC_VAR_FLOAT|inherit_flag);
+ var_Create(obj, "input-fast-seek", VLC_VAR_BOOL|inherit_flag);
+
+ var_Create(obj, "input-slave",
+ VLC_VAR_STRING | inherit_flag);
+
+ var_Create(obj, "audio-desync",
+ VLC_VAR_INTEGER | inherit_flag);
+ var_Create(obj, "cr-average",
+ VLC_VAR_INTEGER | inherit_flag);
+ var_Create(obj, "clock-synchro",
+ VLC_VAR_INTEGER | inherit_flag);
+
+ var_Create(obj, "bookmarks", VLC_VAR_STRING | inherit_flag);
+ var_Create(obj, "programs", VLC_VAR_STRING | inherit_flag);
+ var_Create(obj, "program", VLC_VAR_INTEGER | inherit_flag);
+ var_Create(obj, "rate", VLC_VAR_FLOAT | inherit_flag);
}
/* */
- var_Create( p_input, "input-record-native", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
+ var_Create(obj, "input-record-native", VLC_VAR_BOOL | inherit_flag);
/* */
- var_Create( p_input, "demux", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
- var_Create( p_input, "demux-filter", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
- var_Create( p_input, "stream-filter", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
+ var_Create(obj, "demux", VLC_VAR_STRING | inherit_flag);
+ var_Create(obj, "demux-filter", VLC_VAR_STRING | inherit_flag);
+ var_Create(obj, "stream-filter", VLC_VAR_STRING | inherit_flag);
/* Meta */
- var_Create( p_input, "meta-title", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
- var_Create( p_input, "meta-author", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
- var_Create( p_input, "meta-artist", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
- var_Create( p_input, "meta-genre", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
- var_Create( p_input, "meta-copyright", VLC_VAR_STRING | VLC_VAR_DOINHERIT);
- var_Create( p_input, "meta-description", VLC_VAR_STRING|VLC_VAR_DOINHERIT);
- var_Create( p_input, "meta-date", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
- var_Create( p_input, "meta-url", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
+ var_Create(obj, "meta-title", VLC_VAR_STRING | inherit_flag);
+ var_Create(obj, "meta-author", VLC_VAR_STRING | inherit_flag);
+ var_Create(obj, "meta-artist", VLC_VAR_STRING | inherit_flag);
+ var_Create(obj, "meta-genre", VLC_VAR_STRING | inherit_flag);
+ var_Create(obj, "meta-copyright", VLC_VAR_STRING | inherit_flag);
+ var_Create(obj, "meta-description", VLC_VAR_STRING|inherit_flag);
+ var_Create(obj, "meta-date", VLC_VAR_STRING | inherit_flag);
+ var_Create(obj, "meta-url", VLC_VAR_STRING | inherit_flag);
/* Inherited by demux/subtitle.c */
- var_Create( p_input, "sub-original-fps", VLC_VAR_FLOAT );
+ var_Create(obj, "sub-original-fps", VLC_VAR_FLOAT);
/* used by Medialibrary */
- var_Create( p_input, "save-recentplay", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
+ var_Create(obj, "save-recentplay", VLC_VAR_BOOL | inherit_flag);
}
=====================================
test/Makefile.am
=====================================
@@ -330,8 +330,8 @@ FORCE:
.PHONY: FORCE
libvlc_demux_run_la_SOURCES = src/input/demux-run.c src/input/demux-run.h \
- src/input/common.c src/input/common.h
-libvlc_demux_run_la_CPPFLAGS = $(AM_CPPFLAGS)
+ src/input/common.c src/input/common.h $(top_srcdir)/src/input/var.c
+libvlc_demux_run_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(top_srcdir)/src
libvlc_demux_run_la_LDFLAGS = -no-install -static
libvlc_demux_run_la_LIBADD = \
../lib/libvlc.la ../src/libvlccore.la ../compat/libcompat.la
=====================================
test/src/input/demux-run.c
=====================================
@@ -49,6 +49,9 @@
#include "demux-run.h"
#include "decoder.h"
+void vlc_object_InitInputConfig(vlc_object_t *obj,
+ bool playback, bool do_inherit);
+
struct test_es_out_t
{
struct es_out_t out;
@@ -222,6 +225,8 @@ static const struct es_out_callbacks es_out_cbs =
static es_out_t *test_es_out_create(vlc_object_t *parent)
{
+ vlc_object_InitInputConfig(parent, true, false);
+
struct test_es_out_t *ctx = malloc(sizeof (*ctx));
if (ctx == NULL)
{
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/6af0992c18abf1802aec250c196fe2abb8f8342a...adfdbcb0f334a23f8d4e8756b203233e64f25078
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/6af0992c18abf1802aec250c196fe2abb8f8342a...adfdbcb0f334a23f8d4e8756b203233e64f25078
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
More information about the vlc-commits
mailing list