Bug#986290: libags-audio3: wrong ref-count in ags_fx_factory.c
Package: libags-audio3
Version: 3.7.44-3
Severity: normal
Tags: patch
Dear Maintainer,
Upstream discovered wrong ref-count in ags/audio/ags_fx_factory.c affecting
libags_audio.so and the gsequencer binary.
Without patching memory corruptions could occur. As AgsChannel implementation
might be finalize while in use.
-- System Information:
Debian Release: bullseye/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 5.9.0-1-amd64 (SMP w/24 CPU threads)
Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages libags-audio3 depends on:
ii gstreamer1.0-plugins-bad 1.18.2-1+b1
ii gstreamer1.0-plugins-base 1.18.3-1
ii gstreamer1.0-plugins-good 1.18.3-1
pn libags3 <none>
ii libasound2 1.2.4-1.1
ii libc6 2.31-10
ii libfftw3-double3 3.3.8-2
ii libglib2.0-0 2.66.8-1
ii libgstreamer-plugins-base1.0-0 1.18.3-1
ii libgstreamer1.0-0 1.18.3-1
ii libinstpatch-1.0-2 1.1.6-1
ii libjack-jackd2-0 [libjack-0.125] 1.9.17~dfsg-1
ii libpulse0 14.2-2
ii libsamplerate0 0.2.1+ds0-1
ii libsndfile1 1.0.31-1
ii libsoup2.4-1 2.72.0-2
ii libxml2 2.9.10+dfsg-6.3+b1
libags-audio3 recommends no packages.
libags-audio3 suggests no packages.
diff --git a/ags/audio/ags_fx_factory.c b/ags/audio/ags_fx_factory.c
index 2f904c133..dd2e78fb0 100644
--- a/ags/audio/ags_fx_factory.c
+++ b/ags/audio/ags_fx_factory.c
@@ -788,10 +788,6 @@ ags_fx_factory_create_playback(AgsAudio *audio,
g_object_unref(input);
}
- if(channel != NULL){
- g_object_unref(channel);
- }
-
return(start_recall);
}
@@ -1236,10 +1232,6 @@ ags_fx_factory_create_buffer(AgsAudio *audio,
g_object_unref(input);
}
- if(channel != NULL){
- g_object_unref(channel);
- }
-
return(start_recall);
}
@@ -1657,6 +1649,10 @@ ags_fx_factory_create_volume(AgsAudio *audio,
}
}
+ if(channel != NULL){
+ g_object_unref(channel);
+ }
+
if((AGS_FX_FACTORY_REMAP & (create_flags)) != 0){
if(fx_volume_audio != NULL){
g_object_unref(fx_volume_audio);
@@ -1683,10 +1679,6 @@ ags_fx_factory_create_volume(AgsAudio *audio,
g_object_unref(input);
}
- if(channel != NULL){
- g_object_unref(channel);
- }
-
return(start_recall);
}
@@ -2131,10 +2123,6 @@ ags_fx_factory_create_peak(AgsAudio *audio,
g_object_unref(input);
}
- if(channel != NULL){
- g_object_unref(channel);
- }
-
return(start_recall);
}
@@ -2589,10 +2577,6 @@ ags_fx_factory_create_eq10(AgsAudio *audio,
g_object_unref(input);
}
- if(channel != NULL){
- g_object_unref(channel);
- }
-
return(start_recall);
}
@@ -3047,10 +3031,6 @@ ags_fx_factory_create_analyse(AgsAudio *audio,
g_object_unref(input);
}
- if(channel != NULL){
- g_object_unref(channel);
- }
-
return(start_recall);
}
@@ -3505,10 +3485,6 @@ ags_fx_factory_create_envelope(AgsAudio *audio,
g_object_unref(input);
}
- if(channel != NULL){
- g_object_unref(channel);
- }
-
return(start_recall);
}
@@ -3934,10 +3910,6 @@ ags_fx_factory_create_pattern(AgsAudio *audio,
g_object_unref(input);
}
- if(channel != NULL){
- g_object_unref(channel);
- }
-
return(start_recall);
}
@@ -4381,10 +4353,6 @@ ags_fx_factory_create_notation(AgsAudio *audio,
g_object_unref(input);
}
- if(channel != NULL){
- g_object_unref(channel);
- }
-
return(start_recall);
}
@@ -4892,10 +4860,6 @@ ags_fx_factory_create_ladspa(AgsAudio *audio,
g_object_unref(input);
}
- if(channel != NULL){
- g_object_unref(channel);
- }
-
return(start_recall);
}
@@ -5407,10 +5371,6 @@ ags_fx_factory_create_dssi(AgsAudio *audio,
g_object_unref(input);
}
- if(channel != NULL){
- g_object_unref(channel);
- }
-
return(start_recall);
}
@@ -6025,10 +5985,6 @@ ags_fx_factory_create_lv2(AgsAudio *audio,
if(input != NULL){
g_object_unref(input);
}
-
- if(channel != NULL){
- g_object_unref(channel);
- }
return(start_recall);
}
Reply to: