diff --git a/.cvsignore b/.cvsignore deleted file mode 100644 index 8fa7925..0000000 --- a/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -wordpress-mu-2.6.1.tar.gz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..785848a --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +wordpress-mu-2.8.5.2.tar.gz diff --git a/Makefile b/Makefile deleted file mode 100644 index 70626f2..0000000 --- a/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile for source rpm: wordpress-mu -# $Id$ -NAME := wordpress-mu -SPECFILE = $(firstword $(wildcard *.spec)) - -define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done -endef - -MAKEFILE_COMMON := $(shell $(find-makefile-common)) - -ifeq ($(MAKEFILE_COMMON),) -# attept a checkout -define checkout-makefile-common -test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 -endef - -MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) -endif - -include $(MAKEFILE_COMMON) diff --git a/cve-2009-1030.patch b/cve-2009-1030.patch new file mode 100644 index 0000000..9deb30a --- /dev/null +++ b/cve-2009-1030.patch @@ -0,0 +1,37 @@ +--- wp-includes/wpmu-functions.php 2009-04-07 13:37:57.000000000 -0400 ++++ wp-includes/wpmu-functions.php 2009-04-07 13:42:12.000000000 -0400 +@@ -1836,17 +1867,29 @@ + + ID ); ++ $primary_blog = get_usermeta($current_user->ID, 'primary_blog'); + if( count( $all_blogs ) > 1 ) { +- $primary_blog = get_usermeta($current_user->ID, 'primary_blog'); ++ $found = false; + ?> + + ID, 'primary_blog', $blog->userblog_id ); ++ } ++ } elseif( count( $all_blogs ) == 1 ) { ++ $blog = array_shift( $all_blogs ); ++ echo $blog->domain; ++ if( $primary_blog != $blog->userblog_id ) // Set the primary blog again if it's out of sync with blog list. ++ update_usermeta( $current_user->ID, 'primary_blog', $blog->userblog_id ); + } else { +- echo $_SERVER['HTTP_HOST']; ++ echo "N/A"; + } + ?> + diff --git a/cve-2009-2334.patch b/cve-2009-2334.patch new file mode 100644 index 0000000..1fe7abf --- /dev/null +++ b/cve-2009-2334.patch @@ -0,0 +1,113 @@ +diff --git a/wp-admin/includes/plugin.php b/wp-admin/includes/plugin.php +index 796c4c9..1dd38ce 100644 +--- a/wp-admin/includes/plugin.php ++++ b/wp-admin/includes/plugin.php +@@ -541,7 +541,7 @@ function uninstall_plugin($plugin) { + // + + function add_menu_page( $page_title, $menu_title, $access_level, $file, $function = '', $icon_url = '' ) { +- global $menu, $admin_page_hooks; ++ global $menu, $admin_page_hooks, $_registered_pages; + + $file = plugin_basename( $file ); + +@@ -556,11 +556,13 @@ function add_menu_page( $page_title, $menu_title, $access_level, $file, $functio + + $menu[] = array ( $menu_title, $access_level, $file, $page_title, 'menu-top ' . $hookname, $hookname, $icon_url ); + ++ $_registered_pages[$hookname] = true; ++ + return $hookname; + } + + function add_object_page( $page_title, $menu_title, $access_level, $file, $function = '', $icon_url = '') { +- global $menu, $admin_page_hooks, $_wp_last_object_menu; ++ global $menu, $admin_page_hooks, $_wp_last_object_menu, $_registered_pages; + + $file = plugin_basename( $file ); + +@@ -577,11 +579,13 @@ function add_object_page( $page_title, $menu_title, $access_level, $file, $funct + + $menu[$_wp_last_object_menu] = array ( $menu_title, $access_level, $file, $page_title, 'menu-top ' . $hookname, $hookname, $icon_url ); + ++ $_registered_pages[$hookname] = true; ++ + return $hookname; + } + + function add_utility_page( $page_title, $menu_title, $access_level, $file, $function = '', $icon_url = '') { +- global $menu, $admin_page_hooks, $_wp_last_utility_menu; ++ global $menu, $admin_page_hooks, $_wp_last_utility_menu, $_registered_pages; + + $file = plugin_basename( $file ); + +@@ -598,6 +602,8 @@ function add_utility_page( $page_title, $menu_title, $access_level, $file, $func + + $menu[$_wp_last_utility_menu] = array ( $menu_title, $access_level, $file, $page_title, 'menu-top ' . $hookname, $hookname, $icon_url ); + ++ $_registered_pages[$hookname] = true; ++ + return $hookname; + } + +@@ -606,6 +612,7 @@ function add_submenu_page( $parent, $page_title, $menu_title, $access_level, $fi + global $menu; + global $_wp_real_parent_file; + global $_wp_submenu_nopriv; ++ global $_registered_pages; + + $file = plugin_basename( $file ); + +@@ -635,6 +642,8 @@ function add_submenu_page( $parent, $page_title, $menu_title, $access_level, $fi + if (!empty ( $function ) && !empty ( $hookname )) + add_action( $hookname, $function ); + ++ $_registered_pages[$hookname] = true; ++ + return $hookname; + } + +@@ -859,14 +868,21 @@ function user_can_access_admin_page() { + global $_wp_menu_nopriv; + global $_wp_submenu_nopriv; + global $plugin_page; ++ global $_registered_pages; + + $parent = get_admin_page_parent(); + +- if ( isset( $_wp_submenu_nopriv[$parent][$pagenow] ) ) ++ if ( !isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$parent][$pagenow] ) ) + return false; + +- if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$parent][$plugin_page] ) ) +- return false; ++ if ( isset( $plugin_page ) ) { ++ if ( isset( $_wp_submenu_nopriv[$parent][$plugin_page] ) ) ++ return false; ++ ++ $hookname = get_plugin_page_hookname($plugin_page, $parent); ++ if ( !isset($_registered_pages[$hookname]) ) ++ return false; ++ } + + if ( empty( $parent) ) { + if ( isset( $_wp_menu_nopriv[$pagenow] ) ) +@@ -875,6 +891,8 @@ function user_can_access_admin_page() { + return false; + if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$pagenow][$plugin_page] ) ) + return false; ++ if ( isset( $plugin_page ) && isset( $_wp_menu_nopriv[$plugin_page] ) ) ++ return false; + foreach (array_keys( $_wp_submenu_nopriv ) as $key ) { + if ( isset( $_wp_submenu_nopriv[$key][$pagenow] ) ) + return false; +@@ -884,6 +902,9 @@ function user_can_access_admin_page() { + return true; + } + ++ if ( isset( $plugin_page ) && ( $plugin_page == $parent ) && isset( $_wp_menu_nopriv[$plugin_page] ) ) ++ return false; ++ + if ( isset( $submenu[$parent] ) ) { + foreach ( $submenu[$parent] as $submenu_array ) { + if ( isset( $plugin_page ) && ( $submenu_array[2] == $plugin_page ) ) { diff --git a/import.log b/import.log deleted file mode 100644 index 83b639a..0000000 --- a/import.log +++ /dev/null @@ -1 +0,0 @@ -wordpress-mu-2_6_1-1_fc8:HEAD:wordpress-mu-2.6.1-1.fc8.src.rpm:1220452323 diff --git a/sources b/sources index 9c9f4b4..dbddd58 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -231c841354005a7efdfbaa0d61fc531b wordpress-mu-2.6.1.tar.gz +7d733e276cb5983f58a39365bc97b81e wordpress-mu-2.8.5.2.tar.gz diff --git a/wordpress-mu.spec b/wordpress-mu.spec index f8817db..1af9222 100644 --- a/wordpress-mu.spec +++ b/wordpress-mu.spec @@ -1,7 +1,7 @@ Summary: WordPress-MU multi-user blogging software URL: http://mu.wordpress.org/latest.tar.gz Name: wordpress-mu -Version: 2.6.1 +Version: 2.8.5.2 Release: 1%{?dist} Group: Applications/Publishing License: GPLv2 @@ -17,7 +17,7 @@ WordPress-MU is a derivative of the WordPress blogging codebase, to allow one instance to serve multiple users. %prep -%setup -q +%setup -q -n wordpress-mu # disable-wordpress-core-update, updates are always installed via rpm # @@ -54,6 +54,9 @@ echo "# please see /etc/httpd/conf.d/wordpress-mu.conf" > %{buildroot}%{_datadir find %{buildroot} -empty -exec rm -f {} \; # These are docs, remove them from here, docify them later rm -f %{buildroot}%{_datadir}/wordpress-mu/{license.txt,README.txt} +# remove these as well, detritus +rm -f %{buildroot}%{_datadir}/wordpress-mu/{wordpress-mu-httpd-conf,README.fedora} + %clean rm -rf %{buildroot} @@ -85,6 +88,7 @@ rm -rf %{buildroot} %{_datadir}/wordpress-mu/wp-mail.php %{_datadir}/wordpress-mu/wp-pass.php %{_datadir}/wordpress-mu/wp-rdf.php +%{_datadir}/wordpress-mu/wp-register.php %{_datadir}/wordpress-mu/wp-rss.php %{_datadir}/wordpress-mu/wp-rss2.php %{_datadir}/wordpress-mu/wp-settings.php @@ -92,10 +96,30 @@ rm -rf %{buildroot} %{_datadir}/wordpress-mu/wp-signup.php %{_datadir}/wordpress-mu/wp-trackback.php %{_datadir}/wordpress-mu/xmlrpc.php -%{_datadir}/wordpress-mu/favicon.ico %dir %{_sysconfdir}/wordpress-mu %changelog +* Fri Nov 6 2009 Bret McMillan - 2.8.5.2-1 +- Update to version 2.8.5.2 for security fixes + +* Wed Aug 12 2009 Bret McMillan - 2.8.4a-1 +- Update to version 2.8.4a for security fixes + +* Fri Jul 10 2009 Bret McMillan - 2.7-6 +- Patch for CVE-2009-2334 +- Update to version 2.7 +- Alter source prep so I can still use upstream's tarball +- favicon.ico removed from manifest + +* Tue Apr 7 2009 Bret McMillan - 2.6.5-2 +- Patch for CVE-2009-1030 + +* Mon Dec 1 2008 Bret McMillan - 2.6.5-1 +- Update to 2.6.5 +- http://wordpress.org/development/2008/11/wordpress-265/ +- http://ocaoimh.ie/2008/11/25/wordpress-mu-265/ +- Fixes 1 XSS security issue, 3 bugs + * Wed Sep 3 2008 Bret McMillan - 2.6.1-1 - update to 2.6.1