[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: