rpms/cairo-dock/devel cairo-dock-svn1089-fix-insecure-tmpfile.patch, NONE, 1.1 cairo-dock.spec, 1.24, 1.25

Mamoru Tasaka (mtasaka) fedora-extras-commits at redhat.com
Wed Jun 11 13:57:15 UTC 2008


Author: mtasaka

Update of /cvs/extras/rpms/cairo-dock/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv15474

Modified Files:
	cairo-dock.spec 
Added Files:
	cairo-dock-svn1089-fix-insecure-tmpfile.patch 
Log Message:
* Wed Jun 11 2008 Mamoru Tasaka <mtasaka at ioa.s.u-tokyo.ac.jp> - 1.6.0-0.2.svn1089_trunk
- Fix possibly unsafe tmpfile creation


cairo-dock-svn1089-fix-insecure-tmpfile.patch:

--- NEW FILE cairo-dock-svn1089-fix-insecure-tmpfile.patch ---
--- trunk/plug-ins/compiz-icon/data/compiz.tmpuse	2008-05-20 00:09:35.000000000 +0900
+++ trunk/plug-ins/compiz-icon/data/compiz	2008-06-11 17:04:30.000000000 +0900
@@ -1,5 +1,6 @@
 #!/bin/sh
+if [ ! -w $2 ] ; then exit 1 ; fi
 pgrep compiz > /dev/null && COMPIZ=1 || COMPIZ=0
 pgrep $1 > /dev/null && DECORATOR=1 || DECORATOR=0
 
-echo "$COMPIZ$DECORATOR" > /tmp/compiz
+echo "$COMPIZ$DECORATOR" > $2
--- trunk/plug-ins/compiz-icon/src/applet-compiz.c.tmpuse	2008-06-03 15:35:34.000000000 +0900
+++ trunk/plug-ins/compiz-icon/src/applet-compiz.c	2008-06-11 17:58:30.000000000 +0900
@@ -7,6 +7,8 @@
 Fabrice Rey <fabounet at users.berlios.de>
 
 ******************************************************************************/
+#define _BSD_SOURCE
+#include <stdlib.h>
 #include <string.h>
 #include <cairo-dock.h>
 
@@ -16,12 +18,12 @@
 
 CD_APPLET_INCLUDE_MY_VARS
 
-#define CD_COMPIZ_TMP_FILE "/tmp/compiz"
 #define CD_COMPIZ_CHECK_TIME 5000
 
 static int s_iThreadIsRunning = 0;
 static int s_iSidTimerRedraw = 0;
 static GStaticMutex mutexData = G_STATIC_MUTEX_INIT;
+char  *cd_compiz_tmp_file = NULL;
 
 
 void cd_compiz_start_system_wm (void) {
@@ -126,16 +128,26 @@
 
 
 void cd_compiz_acquisition (void) {
-	gchar *cCommand = g_strdup_printf("bash %s/compiz %s", MY_APPLET_SHARE_DATA_DIR, myConfig.cWindowDecorator);
+	int fds = -1;
+	gchar *cCommand = NULL;
+	cd_compiz_tmp_file = g_strdup("/tmp/compiz.XXXXXX");
+	if ((fds = mkstemp(cd_compiz_tmp_file)) == -1 ) {
+		g_free(cd_compiz_tmp_file);
+		cd_compiz_tmp_file = NULL;
+		return;
+	}
+	cCommand = g_strdup_printf("bash %s/compiz %s %s", MY_APPLET_SHARE_DATA_DIR, myConfig.cWindowDecorator, cd_compiz_tmp_file);
 	system (cCommand);
 	g_free (cCommand);
+	close(fds);
 }
 
 void cd_compiz_read_data(void) {
 	gchar *cContent = NULL;
 	gsize length=0;
 	GError *erreur = NULL;
-	g_file_get_contents(CD_COMPIZ_TMP_FILE, &cContent, &length, &erreur);
+	if (! cd_compiz_tmp_file) return;
+	g_file_get_contents(cd_compiz_tmp_file, &cContent, &length, &erreur);
 	if (erreur != NULL)	{
 		cd_warning("Attention : %s", erreur->message);
 		g_error_free(erreur);
@@ -148,6 +160,9 @@
 		g_free (cContent);
 		myData.bAcquisitionOK = TRUE;
 	}
+	g_remove(cd_compiz_tmp_file);
+	g_free (cd_compiz_tmp_file);
+	cd_compiz_tmp_file = NULL;
 }
 
 gboolean cd_compiz_update_from_data (void) {
--- trunk/plug-ins/compiz-icon/src/applet-notifications.c.tmpuse	2008-05-20 23:14:20.000000000 +0900
+++ trunk/plug-ins/compiz-icon/src/applet-notifications.c	2008-06-11 17:23:19.000000000 +0900
@@ -8,6 +8,8 @@
 
 ******************************************************************************/
 
+#define _BSD_SOURCE
+#include <unistd.h>
 #include <stdlib.h>
 #include <string.h>
 #include <glib/gi18n.h>
@@ -23,13 +25,26 @@
 CD_APPLET_ABOUT (D_("This is the compiz-icon applet\n made by ChAnGFu for Cairo-Dock"))
 
 static void _compiz_get_version (void) {
+	char *tmpfile = g_strdup("/tmp/cd-compiz-version.XXXXXX");
+	char *cmd_header = "compiz.real --version | awk '{print $2}' > ";
+	char *cmd = g_malloc(strlen(cmd_header) + strlen(tmpfile) + 2);
+	int fds = mkstemp(tmpfile);
+	if (fds == -1) {
+		free (tmpfile);
+		free (cmd);
+		return;
+	}
+	close(fds);
+
 	if (myData.iCompizMajor != 0 || myData.iCompizMinor != 0 || myData.iCompizMicro != 0)
 		return ;
-	system ("compiz.real --version | awk '{print $2}' > /tmp/cd-compiz-version");
+	sprintf(cmd, "%s%s", cmd_header, tmpfile);
+	system (cmd);
+	g_free (cmd);
 	GError *erreur = NULL;
 	gsize length = 0;
 	gchar *cContent = NULL;
-	g_file_get_contents ("/tmp/cd-compiz-version", &cContent, &length, &erreur);
+	g_file_get_contents (tmpfile, &cContent, &length, &erreur);
 	if (erreur != NULL) {
 		cd_warning ("Attention : couldn't guess Compiz's version [%s]", erreur->message);
 		g_error_free (erreur);
@@ -40,7 +55,9 @@
 		g_free (cContent);
 	}
 	cd_message ("Compiz : %d.%d.%d", myData.iCompizMajor, myData.iCompizMinor, myData.iCompizMicro);
-	g_remove ("/tmp/cd-compiz-version");
+	g_remove (tmpfile);
+	g_free (tmpfile);
+	tmpfile = NULL;
 }
 
 static void _compiz_dbus_action (const gchar *cCommand) {
--- trunk/plug-ins/nVidia/data/nvidia-config.tmpuse	2008-06-10 00:04:36.000000000 +0900
+++ trunk/plug-ins/nVidia/data/nvidia-config	2008-06-11 17:55:56.000000000 +0900
@@ -1,9 +1,10 @@
 #!/bin/bash
 
-rm -rf /tmp/nvidia-config
-nvidia-settings -v | grep version | head -n 1 > /tmp/nvidia-config
-nvidia-settings -q Gpus | cut -d '(' -f 2 -s >> /tmp/nvidia-config
-nvidia-settings -q VideoRam -t >> /tmp/nvidia-config
-nvidia-settings -q NvidiaDriverVersion -t >> /tmp/nvidia-config
-echo "nVidia" >> /tmp/nvidia
+#rm -rf /tmp/nvidia-config
+if [ ! -w $1 ] ; then exit 1 ; fi
+nvidia-settings -v | grep version | head -n 1 > $1
+nvidia-settings -q Gpus | cut -d '(' -f 2 -s >> $1
+nvidia-settings -q VideoRam -t >> $1
+nvidia-settings -q NvidiaDriverVersion -t >> $1
+echo "nVidia" >> $1
 
--- trunk/plug-ins/nVidia/data/nvidia.tmpuse	2008-06-10 00:04:36.000000000 +0900
+++ trunk/plug-ins/nVidia/data/nvidia	2008-06-11 17:56:19.000000000 +0900
@@ -1,5 +1,6 @@
 #!/bin/bash
 
-rm -rf /tmp/nvidia
-nvidia-settings -q GPUCoreTemp -t > /tmp/nvidia
-echo "nVidia" >> /tmp/nvidia
+#rm -rf /tmp/nvidia
+if [ ! -w $1 ] ; then exit 1 ; fi
+nvidia-settings -q GPUCoreTemp -t > $1
+echo "nVidia" >> $1
--- trunk/plug-ins/nVidia/src/applet-nvidia.c.tmpuse	2008-06-10 00:04:36.000000000 +0900
+++ trunk/plug-ins/nVidia/src/applet-nvidia.c	2008-06-11 17:53:31.000000000 +0900
@@ -1,3 +1,4 @@
+#define _BSD_SOURCE
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
@@ -10,9 +11,12 @@
 
 CD_APPLET_INCLUDE_MY_VARS
 
+#if 0
 #define CD_NVIDIA_CONFIG_TMP_FILE "/tmp/nvidia-config"
 #define CD_NVIDIA_TEMP_TMP_FILE "/tmp/nvidia"
-
+#endif
+gchar *cd_nvidia_config_tmp_file = NULL;
+gchar *cd_nvidia_temp_tmp_file = NULL;
 
 void cd_nvidia_update_from_data (void) {
 	if (myData.bAcquisitionOK) {
@@ -34,9 +38,18 @@
 
 //Récupération de la température
 void cd_nvidia_acquisition (void) {
-	gchar *cCommand = g_strdup_printf("bash %s/nvidia", MY_APPLET_SHARE_DATA_DIR);
+	int fds;
+	cd_nvidia_temp_tmp_file = g_strdup("/tmp/nvidia.XXXXXX");
+	gchar *cCommand;
+	if ((fds = mkstemp(cd_nvidia_temp_tmp_file)) == -1){
+		g_free (cd_nvidia_temp_tmp_file);
+		cd_nvidia_temp_tmp_file = NULL;
+		return;
+	}
+	cCommand = g_strdup_printf("bash %s/nvidia %s", MY_APPLET_SHARE_DATA_DIR, cd_nvidia_temp_tmp_file);
 	system (cCommand);
 	g_free (cCommand);
+	close(fds);
 }
 
 int _nvidia_get_temperature_from_file (gchar *cContent) {
@@ -71,7 +84,8 @@
 	gsize length=0;
 	GError *erreur = NULL;
 	gint iGpuTemp;
-	g_file_get_contents(CD_NVIDIA_TEMP_TMP_FILE, &cContent, &length, &erreur);
+	if (!cd_nvidia_temp_tmp_file) return;
+	g_file_get_contents(cd_nvidia_temp_tmp_file, &cContent, &length, &erreur);
 	if (erreur != NULL) {
 		cd_warning("Attention : %s", erreur->message);
 		g_error_free(erreur);
@@ -89,14 +103,26 @@
 			myData.pGPUData.iGPUTemp = iGpuTemp;
 		}
 	}
+	g_remove(cd_nvidia_temp_tmp_file);
+	g_free(cd_nvidia_temp_tmp_file);
+	cd_nvidia_temp_tmp_file = NULL;
 }
 
 
 //Récupération de la config
 void cd_nvidia_config_acquisition (void) {
-	gchar *cCommand = g_strdup_printf("bash %s/nvidia-config", MY_APPLET_SHARE_DATA_DIR);
+	gchar *cCommand;
+	int fds;
+	cd_nvidia_config_tmp_file = g_strdup("/tmp/nvidia-config.XXXXXX");
+	if ((fds = mkstemp(cd_nvidia_config_tmp_file)) == -1){
+		g_free(cd_nvidia_config_tmp_file);
+		cd_nvidia_config_tmp_file = NULL;
+		return;
+	}
+	cCommand = g_strdup_printf("bash %s/nvidia-config %s", MY_APPLET_SHARE_DATA_DIR, cd_nvidia_config_tmp_file);
 	system (cCommand);
 	g_free (cCommand);
+	close(fds);
 }
 
 static gboolean _nvidia_get_values_from_file (gchar *cContent) {
@@ -163,7 +189,8 @@
 	gchar *cContent = NULL;
 	gsize length=0;
 	GError *erreur = NULL;
-	g_file_get_contents(CD_NVIDIA_CONFIG_TMP_FILE, &cContent, &length, &erreur);
+	if (!cd_nvidia_config_tmp_file) return;
+	g_file_get_contents(cd_nvidia_config_tmp_file, &cContent, &length, &erreur);
 	if (erreur != NULL) {
 		cd_warning("Attention : %s", erreur->message);
 		g_error_free(erreur);
@@ -174,6 +201,9 @@
 		gboolean bAcquisitionOK = _nvidia_get_values_from_file (cContent);
 		g_free (cContent);
 	}
+	g_remove(cd_nvidia_config_tmp_file);
+	g_free(cd_nvidia_config_tmp_file);
+	cd_nvidia_config_tmp_file = NULL;
 }
 
 
--- trunk/plug-ins/wifi/data/wifi.tmpuse	2008-05-20 00:09:37.000000000 +0900
+++ trunk/plug-ins/wifi/data/wifi	2008-06-11 17:21:45.000000000 +0900
@@ -1,4 +1,5 @@
 #!/bin/bash
-rm -f /tmp/wifi
-iwconfig > /tmp/wifi 2>/dev/null
-echo "Wifi" >> /tmp/wifi
+# rm -f /tmp/wifi !! should not remove this here
+if [ ! -w $1 ] ; then exit 1 ; fi
+iwconfig > $1 2>/dev/null
+echo "Wifi" >> $1
--- trunk/plug-ins/wifi/src/applet-wifi.c.tmpuse	2008-06-03 15:35:34.000000000 +0900
+++ trunk/plug-ins/wifi/src/applet-wifi.c	2008-06-11 17:56:09.000000000 +0900
@@ -1,3 +1,4 @@
+#define _BSD_SOURCE
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
@@ -9,12 +10,20 @@
 #include "applet-wifi.h"
 
 CD_APPLET_INCLUDE_MY_VARS
-
-#define WIFI_TMP_FILE "/tmp/wifi"
-
+gchar *wifi_tmp_file = NULL;
+/* access-point does not seem to be used */
 
 void cd_wifi_acquisition (void) {
-	gchar *cCommand = g_strdup_printf("bash %s/wifi", MY_APPLET_SHARE_DATA_DIR);
+	gchar *cCommand = NULL;
+	int fds = -1;
+	wifi_tmp_file = g_strdup("/tmp/wifi.XXXXXX");
+	if ((fds = mkstemp(wifi_tmp_file)) == -1) {
+		g_free(wifi_tmp_file);
+		wifi_tmp_file = NULL;
+		return;
+	}
+	close(fds);
+	cCommand = g_strdup_printf("bash %s/wifi %s", MY_APPLET_SHARE_DATA_DIR, wifi_tmp_file);
 	system (cCommand);
 	/**if (myData.cConnName != NULL) {
 		cCommand = g_strdup_printf("bash %s/access-point %s", MY_APPLET_SHARE_DATA_DIR, myData.cConnName);
@@ -129,7 +138,8 @@
 	gchar *cContent = NULL;
 	gsize length=0;
 	GError *erreur = NULL;
-	g_file_get_contents(WIFI_TMP_FILE, &cContent, &length, &erreur);
+	if (!wifi_tmp_file) return;
+	g_file_get_contents(wifi_tmp_file, &cContent, &length, &erreur);
 	if (erreur != NULL) {
 		cd_warning("Attention : %s", erreur->message);
 		g_error_free(erreur);
@@ -149,6 +159,10 @@
 			myData.bAcquisitionOK = TRUE;
 		}
 	}
+	g_remove(wifi_tmp_file);
+	g_free(wifi_tmp_file);
+	wifi_tmp_file = NULL;
+	
 }
 
 
--- trunk/plug-ins/xmms/data/infoaudacious.sh.tmpuse	2008-05-20 00:09:47.000000000 +0900
+++ trunk/plug-ins/xmms/data/infoaudacious.sh	2008-06-11 16:21:56.000000000 +0900
@@ -2,7 +2,8 @@
 # Audacious Emulated pipe
 # Pipe created by ChAnGFu
 
-FILE="/tmp/audacious-info_$USER.0"
+if [ ! -w $1 ] ; then exit 1 ; fi
+FILE=$1
 
 STATUS=$(audtool playback-status)
 TITLE=$(audtool current-song)
--- trunk/plug-ins/xmms/data/infobanshee.sh.tmpuse	2008-05-20 00:09:47.000000000 +0900
+++ trunk/plug-ins/xmms/data/infobanshee.sh	2008-06-11 16:22:13.000000000 +0900
@@ -2,7 +2,8 @@
 # Banshee Emulated pipe
 # Pipe created by ChAnGFu
 
-FILE="/tmp/banshee-info_$USER.0"
+if [ ! -w $1 ] ; then exit 1 ; fi
+FILE=$1
 
 STATUS=$(banshee --query-status)
 STATUS=${STATUS#*:}
--- trunk/plug-ins/xmms/data/infoexaile.sh.tmpuse	2008-05-20 00:09:47.000000000 +0900
+++ trunk/plug-ins/xmms/data/infoexaile.sh	2008-06-11 16:22:37.000000000 +0900
@@ -2,7 +2,8 @@
 # Exaile Emulated pipe
 # Pipe created by ChAnGFu
 
-FILE="/tmp/exaile-info_$USER.0"
+if [ ! -w $1 ] ; then exit 1 ; fi
+FILE=$1
 
 EXAILE=`ps aux | grep exaile | grep -v grep | grep -v info`
 if [ "x$EXAILE" = "x" ]; then
--- trunk/plug-ins/xmms/src/applet-infopipe.c.tmpuse	2008-05-20 00:09:46.000000000 +0900
+++ trunk/plug-ins/xmms/src/applet-infopipe.c	2008-06-11 21:10:49.000000000 +0900
@@ -7,6 +7,10 @@
 Fabrice Rey (fabounet at users.berlios.de)
 
 ******************************************************************************/
+#define _BSD_SOURCE
+
+#include <stdio.h>
+#include <unistd.h>
 #include <stdlib.h>
 #include <string.h>
 #include <glib/gi18n.h>
@@ -19,6 +23,11 @@
 
 CD_APPLET_INCLUDE_MY_VARS
 
+gchar *cInfopipeFilePath = NULL;
+gchar *cInfopipeFilePath_XMMS = NULL;
+gchar *cInfopipeFilePath_AUDACIOUS = NULL;
+gchar *cInfopipeFilePath_BANSHEE = NULL;
+gchar *cInfopipeFilePath_EXAILE = NULL;
 
 enum {
 	INFO_STATUS = 0,
@@ -40,39 +49,62 @@
 
 void cd_xmms_acquisition (void) {
 	gchar *cCommand = NULL;
+	int fds = -1;
 	switch (myConfig.iPlayer) {
 		case MY_XMMS :
 		break ;
 		case MY_AUDACIOUS :  //Il faut émuler le pipe d'audacious par AUDTOOL
-			cCommand = g_strdup_printf ("bash %s/infoaudacious.sh", MY_APPLET_SHARE_DATA_DIR);
+			cInfopipeFilePath = g_strdup_printf("/tmp/audacious-info_%s.0.XXXXXX",g_getenv ("USER"));
+			if ((fds = mkstemp(cInfopipeFilePath)) == -1) {
+				g_free (cInfopipeFilePath);
+				cInfopipeFilePath = NULL;
+				return;
+			}
+			cInfopipeFilePath_AUDACIOUS = cInfopipeFilePath;
+			cCommand = g_strdup_printf ("bash %s/infoaudacious.sh %s", MY_APPLET_SHARE_DATA_DIR, cInfopipeFilePath);
 			system (cCommand);
 		break ;
 		case MY_BANSHEE :  //Le pipe est trop lent et cause des freezes... // Il faut émuler le pipe de banshee par le script
-			cCommand = g_strdup_printf ("bash %s/infobanshee.sh", MY_APPLET_SHARE_DATA_DIR);
+			cInfopipeFilePath = g_strdup_printf("/tmp/banshee-info_%s.0.XXXXXX",g_getenv ("USER"));
+			if ((fds = mkstemp(cInfopipeFilePath)) == -1) {
+				g_free (cInfopipeFilePath);
+				cInfopipeFilePath = NULL;
+				return;
+			}
+			cInfopipeFilePath_BANSHEE = cInfopipeFilePath;
+			cCommand = g_strdup_printf ("bash %s/infobanshee.sh %s", MY_APPLET_SHARE_DATA_DIR, cInfopipeFilePath);
 			system (cCommand);
 		break ;
 		case MY_EXAILE :  //Le pipe est trop lent, récupération des infos une fois sur deux avec un pique du cpu lors de l'éxécution du script // Il faut émuler le pipe d'audacious par Exaile -q
-			cCommand = g_strdup_printf ("bash %s/infoexaile.sh", MY_APPLET_SHARE_DATA_DIR);
+			if ((fds = mkstemp(cInfopipeFilePath)) == -1) {
+				g_free (cInfopipeFilePath);
+				cInfopipeFilePath = NULL;
+				return;
+			}
+			cInfopipeFilePath = g_strdup_printf("/tmp/exaile-info_%s.0.XXXXXX",g_getenv ("USER"));
+			cInfopipeFilePath_EXAILE = cInfopipeFilePath;
+			cCommand = g_strdup_printf ("bash %s/infoexaile.sh %s", MY_APPLET_SHARE_DATA_DIR, cInfopipeFilePath);
 			system (cCommand);
 		break ;
 		default :
 		break ;
 	}
+	close(fds);
 	g_free (cCommand);
 }
 
 //Fonction de lecture du tuyau.
 void cd_xmms_read_data (void) {
-	gchar *cInfopipeFilePath = NULL;
+	cInfopipeFilePath = NULL;
 	switch (myConfig.iPlayer) {
 		case MY_XMMS :
-			cInfopipeFilePath = g_strdup_printf("/tmp/xmms-info_%s.0",g_getenv ("USER"));
+			cInfopipeFilePath = cInfopipeFilePath_XMMS;
 		break ;
 		case MY_AUDACIOUS :
-			cInfopipeFilePath = g_strdup_printf("/tmp/audacious-info_%s.0",g_getenv ("USER"));
+			cInfopipeFilePath = cInfopipeFilePath_AUDACIOUS;
 		break ;
 		case MY_BANSHEE :
-			cInfopipeFilePath = g_strdup_printf("/tmp/banshee-info_%s.0",g_getenv ("USER"));
+			cInfopipeFilePath = cInfopipeFilePath_BANSHEE;
 		break ;
 		case MY_EXAILE :
 		break ;
@@ -214,22 +246,23 @@
 	if (myConfig.iPlayer != MY_XMMS) {
 	  g_remove (cInfopipeFilePath);
 	  g_free (cInfopipeFilePath);
+	  cInfopipeFilePath = NULL;
 	}
 }
 
 
 //Fonction qui supprime les tuyaux émulés pour eviter des pics CPU
 void cd_xmms_remove_pipes(void) {
-	gchar *cInfopipeFilePath = NULL;
+	cInfopipeFilePath = NULL;
 	switch (myConfig.iPlayer) {
 		case MY_AUDACIOUS :
-			cInfopipeFilePath = g_strdup_printf("/tmp/audacious-info_%s.0",g_getenv ("USER"));
+			cInfopipeFilePath = cInfopipeFilePath_AUDACIOUS;
 		break;
 		case MY_BANSHEE :
-			cInfopipeFilePath = g_strdup_printf("/tmp/banshee-info_%s.0",g_getenv ("USER"));
+			cInfopipeFilePath = cInfopipeFilePath_BANSHEE;
 		break;
 		case MY_EXAILE :
-			cInfopipeFilePath = g_strdup_printf("/tmp/exaile-info_%s.0",g_getenv ("USER"));
+			cInfopipeFilePath = cInfopipeFilePath_EXAILE;
 		break;
 		default :  // xmms n'en a pas.
 		return ;


Index: cairo-dock.spec
===================================================================
RCS file: /cvs/extras/rpms/cairo-dock/devel/cairo-dock.spec,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- cairo-dock.spec	11 Jun 2008 04:42:42 -0000	1.24
+++ cairo-dock.spec	11 Jun 2008 13:56:31 -0000	1.25
@@ -9,7 +9,7 @@
 %define		build_gecko	1
 
 
-%define		fedora_rel	0.1.%{tarballver}
+%define		fedora_rel	0.2.%{tarballver}
 
 
 %if 0%{?fedora} >= 9
@@ -28,6 +28,7 @@
 License:	GPLv3+
 URL:		http://www.cairo-dock.org/
 Source0:	http://download.berlios.de/cairo-dock/%{name}-sources-%{tarballver}.tar.bz2
+Patch0:		cairo-dock-svn1089-fix-insecure-tmpfile.patch
 BuildRoot:	%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 BuildRequires:	automake
@@ -127,10 +128,13 @@
 %prep
 %setup -q -c
 find . -type d -name \.svn | sort -r | xargs %{__rm} -rf
-find . -type d -name \*CVS | sort -r | xargs %{__rm} -rf
+find . -type d -name \*CVS\* | sort -r | xargs %{__rm} -rf
+
+pushd opt/cairo-dock/trunk/
+%patch0 -p1 -b .tmpuse
 
 # A. main
-pushd opt/cairo-dock/trunk/cairo-dock
+cd cairo-dock
 # temporary fix
 %{__sed} -i.inline -e 's|^inline ||' src/cairo-dock-draw.*
 
@@ -498,6 +502,9 @@
 %{_libdir}/pkgconfig/*.pc
 
 %changelog
+* Wed Jun 11 2008 Mamoru Tasaka <mtasaka at ioa.s.u-tokyo.ac.jp> - 1.6.0-0.2.svn1089_trunk
+- Fix possibly unsafe tmpfile creation
+
 * Wed Jun 11 2008 Mamoru Tasaka <mtasaka at ioa.s.u-tokyo.ac.jp>
 - svn 1089
 




More information about the fedora-extras-commits mailing list