[xsettings-kde] * Wed Jan 18 2012 Kevin Kofler <Kevin at tigcc.ticalc.org> - 0.12.3-2 - fix use-after-free bug in my pa

Kevin Kofler kkofler at fedoraproject.org
Wed Jan 18 20:42:07 UTC 2012


commit 18364b23f0cf846a82b8eece5916e8f1d6336972
Author: Kevin Kofler <Kevin at tigcc.ticalc.org>
Date:   Wed Jan 18 21:41:47 2012 +0100

    * Wed Jan 18 2012 Kevin Kofler <Kevin at tigcc.ticalc.org> - 0.12.3-2
    - fix use-after-free bug in my patch

 xsettings-kde-0.12.3-gtktheme.patch |   66 +++++++++++++++++++----------------
 xsettings-kde.spec                  |    5 ++-
 2 files changed, 40 insertions(+), 31 deletions(-)
---
diff --git a/xsettings-kde-0.12.3-gtktheme.patch b/xsettings-kde-0.12.3-gtktheme.patch
index 3e1388e..7a8ee71 100644
--- a/xsettings-kde-0.12.3-gtktheme.patch
+++ b/xsettings-kde-0.12.3-gtktheme.patch
@@ -1,6 +1,6 @@
 diff -ur xsettings-kde-0.12.3/xsettings-kde.c xsettings-kde-0.12.3-gtktheme/xsettings-kde.c
 --- xsettings-kde-0.12.3/xsettings-kde.c	2011-10-07 01:09:07.000000000 +0200
-+++ xsettings-kde-0.12.3-gtktheme/xsettings-kde.c	2012-01-17 23:05:41.000000000 +0100
++++ xsettings-kde-0.12.3-gtktheme/xsettings-kde.c	2012-01-18 21:38:27.000000000 +0100
 @@ -239,15 +239,12 @@
  	char filename[1024];
  	char kdeprefix[1024];
@@ -34,22 +34,39 @@ diff -ur xsettings-kde-0.12.3/xsettings-kde.c xsettings-kde-0.12.3-gtktheme/xset
  				notify |= readDPI(buffer);
  
  				break;
-@@ -455,55 +442,28 @@
- 		free (buffer);
- 	}
+@@ -451,59 +438,32 @@
+ 	} while (user_file == 0);
+       }
+ 
+-	if (buffer) {
+-		free (buffer);
+-	}
++	/* look for style set by kcm-gtk, enforce it through Net/ThemeName so GTK+ 3 also picks it up */
++	if (password) {
++		sprintf (filename, "%s/.gtkrc-2.0-kde4", password->pw_dir);
++		file = fopen (filename, "r");
++
++		if (file) {
++			while ((read = getline (&buffer, &len, file)) != -1) {
++				if (strncmp (buffer, "gtk-theme-name=", 15) == 0) {
++					sscanf (buffer, "gtk-theme-name=\"%1023[^\"]\"", style);
++				}
++			}
  
 -	if ((style[0] == '\0' || (!is_kde4 && strcmp(style, "ia_ora") == 0) || (is_kde4 && strcmp(style, "iaora-qt") == 0) || (is_kde4 && strcmp(style, "iaorakde") == 0)) && strncmp("Ia Ora ", color, 7) == 0)
 -		       	{
 -		strcpy(style, color);
 -		if (!is_kde4) {
 -			style[strlen(style)-6] = '\0';
--		}
--	}
++			fclose (file);
++			file = NULL;
+ 		}
+ 	}
 -				
 -	if (style[0]) {
 -		int gtkrc_access = 1;
 -		sprintf(themefilename, "/usr/share/themes/%s/gtk-2.0/gtkrc", style);
--
+ 
 -		if (password) {
 -			char gtkrc[1024];
 -			sprintf(gtkrc,"%s/.gtkrc-2.0", password->pw_dir);
@@ -61,7 +78,10 @@ diff -ur xsettings-kde-0.12.3/xsettings-kde.c xsettings-kde-0.12.3-gtktheme/xset
 -				
 -				gtkrc_env = getenv ("GTK2_RC_FILES");
 -				gtkrc_file = NULL;
--
++	if (buffer) {
++		free (buffer);
++	}
+ 
 -				if (gtkrc_env) {
 -					do {
 -						if (gtkrc_file == NULL) {
@@ -76,34 +96,20 @@ diff -ur xsettings-kde-0.12.3/xsettings-kde.c xsettings-kde-0.12.3-gtktheme/xset
 -							}
 -						}
 -					} while (gtkrc_file != NULL );
-+	/* look for style set by kcm-gtk, enforce it through Net/ThemeName so GTK+ 3 also picks it up */
-+	if (password) {
-+		sprintf (filename, "%s/.gtkrc-2.0-kde4", password->pw_dir);
-+		file = fopen (filename, "r");
-+
-+		if (file) {
-+			while ((read = getline (&buffer, &len, file)) != -1) {
-+				if (strncmp (buffer, "gtk-theme-name=", 15) == 0) {
-+					sscanf (buffer, "gtk-theme-name=\"%1023[^\"]\"", style);
- 				}
- 			}
-+
-+			fclose (file);
-+			file = NULL;
+-				}
+-			}
++	if (style[0]) {
++		for (i = 0 ; i < max_display ; i++) {
++			xsettings_manager_set_string (managers[i], "Net/ThemeName", style);
  		}
-+	}
- 
+-
 -		/* do not set theme name if .gtkrc is being used */ 
 -		if (gtkrc_access && (access (themefilename, F_OK) == 0 )) {
 -			for (i = 0 ; i < max_display ; i++) {
 -				xsettings_manager_set_string (managers[i], "Net/ThemeName", style);
 -			}
--		notify = 1;
-+	if (style[0]) {
-+		for (i = 0 ; i < max_display ; i++) {
-+			xsettings_manager_set_string (managers[i], "Net/ThemeName", style);
- 		}
-+		notify = 1;
+ 		notify = 1;
+-		}
  	}
  
  
diff --git a/xsettings-kde.spec b/xsettings-kde.spec
index d8db3fc..517eaa3 100644
--- a/xsettings-kde.spec
+++ b/xsettings-kde.spec
@@ -2,7 +2,7 @@
 Summary: XSettings Daemon for KDE
 Name:    xsettings-kde
 Version: 0.12.3
-Release: 1%{?dist}
+Release: 2%{?dist}
 License: GPLv2+
 Group:   User Interface/Desktops 
 Source0: http://distro.ibiblio.org/pub/linux/distributions/mageia/software/xsettings-kde/%{version}/xsettings-kde-%{version}.tar.bz2 
@@ -63,6 +63,9 @@ rm -rf %{buildroot}
 
 
 %changelog
+* Wed Jan 18 2012 Kevin Kofler <Kevin at tigcc.ticalc.org> - 0.12.3-2
+- fix use-after-free bug in my patch
+
 * Tue Jan 17 2012 Kevin Kofler <Kevin at tigcc.ticalc.org> - 0.12.3-1
 - update to 0.12.3
 - drop upstreamed immodule patch


More information about the scm-commits mailing list