Since this is a security fix that's been sitting around for a bit, I'm going to 
go ahead and upload the attached NMU diff.  There are two possible patches 
available to resolve this issue.  The initial one done by Ubuntu and the 
upstream one.  Since the upstream patch also had some functional changes, the 
NMU is based on the Ubuntu patch (both resolved the security issue) to keep 
the changes to the minimum.

For the maintainers, of course I'm glad to have you do it the other way if you 
prefer, but I think it's better to at least get a security fix in the archive 
than not.

Scott K
diff -Nru rhythmbox-2.97/debian/changelog rhythmbox-2.97/debian/changelog
--- rhythmbox-2.97/debian/changelog	2012-06-20 01:38:10.000000000 -0400
+++ rhythmbox-2.97/debian/changelog	2012-07-27 21:42:01.000000000 -0400
@@ -1,3 +1,18 @@
+rhythmbox (2.97-2.1) unstable; urgency=high
+
+  * Non-maintainer upload.
+  * Urgency high for security fix
+  * fix insecure directory for python module import in context plugin
+    (Closes: #616673)
+    - debian/patches/CVE-2012-3355.patch: update context plugin to use
+      tempfile.mkdtemp() instead of /tmp/context. Patch thanks to Andreas
+      Henriksson (used theUbuntu security fix instead of the upstream commit
+      because the upstream commit was a mix of functional changes and a
+      security fix))
+    - CVE-2012-3355
+
+ -- Scott Kitterman <sc...@kitterman.com>  Fri, 27 Jul 2012 16:41:52 -0400
+
 rhythmbox (2.97-2) unstable; urgency=low
 
   [ Jon Dowland ]
diff -Nru rhythmbox-2.97/debian/patches/CVE-2012-3355.patch rhythmbox-2.97/debian/patches/CVE-2012-3355.patch
--- rhythmbox-2.97/debian/patches/CVE-2012-3355.patch	1969-12-31 19:00:00.000000000 -0500
+++ rhythmbox-2.97/debian/patches/CVE-2012-3355.patch	2012-07-27 16:40:00.000000000 -0400
@@ -0,0 +1,100 @@
+Origin: http://bugzilla-attachments.gnome.org/attachment.cgi?id=218103
+Author: Andreas Henriksson <andr...@fatal.se>
+Description: use mkdtemp to securely create temp dir
+Bug: https://bugzilla.gnome.org/process_bug.cgi
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=616673
+Bug-RedHat: https://bugzilla.redhat.com/show_bug.cgi?id=835076
+
+Index: rhythmbox-2.96/plugins/context/AlbumTab.py
+===================================================================
+--- rhythmbox-2.96.orig/plugins/context/AlbumTab.py	2012-03-10 04:22:26.000000000 -0600
++++ rhythmbox-2.96/plugins/context/AlbumTab.py	2012-07-09 10:53:07.000000000 -0500
+@@ -126,9 +126,9 @@
+         self.path = rb.find_plugin_file (self.plugin, 'tmpl/album-tmpl.html')
+         self.loading_path = rb.find_plugin_file (self.plugin, 'tmpl/loading.html')
+         self.album_template = Template (filename = self.path,
+-                                        module_directory = '/tmp/context')
++                                        module_directory = self.plugin.tempdir)
+         self.loading_template = Template (filename = self.loading_path, 
+-                                          module_directory = '/tmp/context')
++                                          module_directory = self.plugin.tempdir)
+         self.styles = self.basepath + '/tmpl/main.css'
+ 
+     def album_list_ready (self, ds):
+Index: rhythmbox-2.96/plugins/context/ArtistTab.py
+===================================================================
+--- rhythmbox-2.96.orig/plugins/context/ArtistTab.py	2012-03-10 04:22:26.000000000 -0600
++++ rhythmbox-2.96/plugins/context/ArtistTab.py	2012-07-09 10:53:07.000000000 -0500
+@@ -123,8 +123,8 @@
+     def load_tmpl (self):
+         self.path = rb.find_plugin_file(self.plugin, 'tmpl/artist-tmpl.html')
+         self.loading_path = rb.find_plugin_file (self.plugin, 'tmpl/loading.html')
+-        self.template = Template (filename = self.path, module_directory = '/tmp/context/')
+-        self.loading_template = Template (filename = self.loading_path, module_directory = '/tmp/context')
++        self.template = Template (filename = self.path, module_directory = self.plugin.tempdir)
++        self.loading_template = Template (filename = self.loading_path, module_directory = self.plugin.tempdir)
+         self.styles = self.basepath + '/tmpl/main.css'
+ 
+     def connect_signals (self):
+Index: rhythmbox-2.96/plugins/context/context.py
+===================================================================
+--- rhythmbox-2.96.orig/plugins/context/context.py	2012-02-12 00:13:11.000000000 -0600
++++ rhythmbox-2.96/plugins/context/context.py	2012-07-09 10:53:07.000000000 -0500
+@@ -26,6 +26,10 @@
+ 
+ # vim:shiftwidth=4:softtabstop=4:expandtab
+ 
++from tempfile import mkdtemp
++from os.path import isdir
++from shutil import rmtree
++
+ import ContextView as cv
+ 
+ from gi.repository import GObject, Peas
+@@ -34,13 +38,17 @@
+ class ContextPlugin(GObject.Object, Peas.Activatable):
+     __gtype_name__ = 'ContextPlugin'
+     object = GObject.property(type=GObject.Object)
++    tempdir = None
+ 
+     def __init__ (self):
+         GObject.Object.__init__ (self)
+ 
+     def do_activate (self):
++        self.tempdir = mkdtemp(prefix = 'rb-context')
+         self.context_view = cv.ContextView (self.object, self)
+ 
+     def do_deactivate(self):
+         self.context_view.deactivate(self.object)
+         del self.context_view
++        if (isdir(self.tempdir)):
++            rmtree(self.tempdir)
+Index: rhythmbox-2.96/plugins/context/LinksTab.py
+===================================================================
+--- rhythmbox-2.96.orig/plugins/context/LinksTab.py	2012-03-10 04:22:26.000000000 -0600
++++ rhythmbox-2.96/plugins/context/LinksTab.py	2012-07-09 10:53:07.000000000 -0500
+@@ -107,7 +107,7 @@
+         self.images = self.basepath + '/img/links/'
+         self.styles = self.basepath + '/tmpl/main.css'
+         self.template = Template (filename = self.path, 
+-                                  module_directory = '/tmp/context/')
++                                  module_directory = self.plugin.tempdir)
+ 
+         self.file = self.template.render (error      = ds.get_error (),
+                                           artist     = ds.get_artist(),
+Index: rhythmbox-2.96/plugins/context/LyricsTab.py
+===================================================================
+--- rhythmbox-2.96.orig/plugins/context/LyricsTab.py	2012-03-10 04:22:26.000000000 -0600
++++ rhythmbox-2.96/plugins/context/LyricsTab.py	2012-07-09 10:53:07.000000000 -0500
+@@ -111,9 +111,9 @@
+         self.path = rb.find_plugin_file(self.plugin, 'tmpl/lyrics-tmpl.html')
+         self.loading_path = rb.find_plugin_file (self.plugin, 'tmpl/loading.html')
+         self.template = Template (filename = self.path, 
+-                                  module_directory = '/tmp/context/')
++                                  module_directory = self.plugin.tempdir)
+         self.loading_template = Template (filename = self.loading_path, 
+-                                          module_directory = '/tmp/context')
++                                          module_directory = self.plugin.tempdir)
+         self.styles = self.basepath + '/tmpl/main.css'
+ 
+     def lyrics_ready (self, ds, entry, lyrics):
diff -Nru rhythmbox-2.97/debian/patches/series rhythmbox-2.97/debian/patches/series
--- rhythmbox-2.97/debian/patches/series	2012-06-19 17:21:03.000000000 -0400
+++ rhythmbox-2.97/debian/patches/series	2012-07-27 16:40:37.000000000 -0400
@@ -1 +1,2 @@
 rb-mb5.patch
+CVE-2012-3355.patch

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to