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

Bug#680381: marked as done (unblock: spip/2.1.16-1)



Your message dated Thu, 05 Jul 2012 17:23:49 +0200
with message-id <4FF5B185.7030001@dogguy.org>
and subject line Re: Bug#680381: unblock: spip/2.1.16-1
has caused the Debian Bug report #680381,
regarding unblock: spip/2.1.16-1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
680381: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=680381
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: freeze-exception

Please unblock package spip, it's a minor release that will fix a
security issue, and a few bugs. The attached debdiff is pretty thin:
most of the changes, in the security screen file, are due to rewritten
comments.

unblock spip/2.1.16-1

-- System Information:
Debian Release: 6.0.5
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'proposed-updates'), (500, 'stable'), (150, 'testing'), (120, 'unstable'), (110, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 2.6.32-5-686 (SMP w/1 CPU core)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
diff -Nru spip-2.1.15/debian/changelog spip-2.1.16/debian/changelog
--- spip-2.1.15/debian/changelog	2012-06-12 19:17:13.000000000 -0400
+++ spip-2.1.16/debian/changelog	2012-07-04 08:46:23.000000000 -0400
@@ -1,3 +1,13 @@
+spip (2.1.16-1) unstable; urgency=high
+
+  * New upstream version:
+    - fixes PHP injection (Closes: #680118);
+    - fixes growing session directory;
+    - fixes PHP 5.4 compatibility.
+  * Update security screen file to 1.1.3.
+
+ -- David Prévot <taffit@debian.org>  Wed, 04 Jul 2012 08:42:01 -0400
+
 spip (2.1.15-1) unstable; urgency=high
 
   * New upstream version, fixes cross site scripting.
diff -Nru spip-2.1.15/debian/patches/fix_displayed_version.patch spip-2.1.16/debian/patches/fix_displayed_version.patch
--- spip-2.1.15/debian/patches/fix_displayed_version.patch	2012-06-12 17:55:50.000000000 -0400
+++ spip-2.1.16/debian/patches/fix_displayed_version.patch	2012-07-04 08:30:47.000000000 -0400
@@ -2,7 +2,7 @@
  Make it obvious it's a Debian (patched) version
 Forwarded: not-needed
 Author: David Prévot <taffit@debian.org>
-Last-Update: 2012-06-12
+Last-Update: 2012-07-04
 --- a/ecrire/inc_version.php
 +++ b/ecrire/inc_version.php
 @@ -423,7 +423,7 @@
@@ -10,7 +10,7 @@
  // 1.xxyy : xx00 versions stables publiees, xxyy versions de dev
  // (ce qui marche pour yy ne marchera pas forcement sur une version plus ancienne)
 -$spip_version_affichee = "$spip_version_branche";
-+$spip_version_affichee = "2.1.15-1 (Debian)";
++$spip_version_affichee = "2.1.16-1 (Debian)";
  
  // ** Securite **
  $visiteur_session = $auteur_session = $connect_statut = $connect_toutes_rubriques =  $hash_recherche = $hash_recherche_strict = $ldap_present ='';
diff -Nru spip-2.1.15/debian/security/ecran_securite.php spip-2.1.16/debian/security/ecran_securite.php
--- spip-2.1.15/debian/security/ecran_securite.php	2012-06-12 17:06:39.000000000 -0400
+++ spip-2.1.16/debian/security/ecran_securite.php	2012-07-04 08:31:30.000000000 -0400
@@ -5,21 +5,20 @@
  * ------------------
  */
 
-define('_ECRAN_SECURITE', '1.1.2'); // 12 juin  2012
+define('_ECRAN_SECURITE', '1.1.3'); // 3 juillet 2012
 
 /*
  * Documentation : http://www.spip.net/fr_article4200.html
- *
  */
 
 /*
- * test utilisateur
+ * Test utilisateur
  */
 if (isset($_GET['test_ecran_securite']))
 	$ecran_securite_raison = 'test '._ECRAN_SECURITE;
 
 /*
- * detecteur de robot d'indexation
+ * Détecteur de robot d'indexation
  */
 if (!defined('_IS_BOT'))
 	define('_IS_BOT',
@@ -28,10 +27,11 @@
 			(string) $_SERVER['HTTP_USER_AGENT'])
 	);
 
-/*     - interdit de passer une variable id_article (ou id_xxx) qui ne
- *       soit pas numerique (ce qui bloque l'exploitation de divers trous
- *       de securite, dont celui de toutes les versions < 1.8.2f)
- *       (sauf pour id_table, qui n'est pas numerique jusqu'a [5743])
+/*
+ * Interdit de passer une variable id_article (ou id_xxx) qui ne
+ * soit pas numérique (ce qui bloque l'exploitation de divers trous
+ * de sécurité, dont celui de toutes les versions < 1.8.2f)
+ * (sauf pour id_table, qui n'est pas numérique jusqu'à [5743])
  */
 foreach ($_GET as $var => $val)
 	if ($_GET[$var] AND strncmp($var,"id_",3)==0 AND $var!='id_table')
@@ -43,15 +43,14 @@
 	if ($GLOBALS[$var] AND strncmp($var,"id_",3)==0 AND $var!='id_table')
 		$GLOBALS[$var] = is_array($GLOBALS[$var])?@array_map('intval',$GLOBALS[$var]):intval($GLOBALS[$var]);
 
-
-/*     - interdit la variable $cjpeg_command, qui etait utilisee sans
- *       precaution dans certaines versions de dev (1.8b2 -> 1.8b5)
- *
+/*
+ * Interdit la variable $cjpeg_command, qui était utilisée sans
+ * précaution dans certaines versions de dev (1.8b2 -> 1.8b5)
  */
 $cjpeg_command='';
 
-/*     - controle de quelques variables (XSS)
- *
+/*
+ * Contrôle de quelques variables (XSS)
  */
 foreach(array('lang', 'var_recherche', 'aide', 'var_lang_r', 'lang_r', 'var_ajax_ancre') as $var) {
 	if (isset($_GET[$var]))
@@ -60,15 +59,15 @@
 		$_REQUEST[$var] = $GLOBALS[$var] = $_POST[$var] = preg_replace(',[^\w\,/#&;-]+,',' ',(string)$_POST[$var]);
 }
 
-/*     - filtre l'acces a spip_acces_doc (injection SQL en 1.8.2x)
- *
+/*
+ * Filtre l'accès à spip_acces_doc (injection SQL en 1.8.2x)
  */
 if (preg_match(',^(.*/)?spip_acces_doc\.,', (string)$_SERVER['REQUEST_URI'])) {
 	$file = addslashes((string)$_GET['file']);
 }
 
 /*
- *     - agenda joue a l'injection php
+ * Agenda joue à l'injection php
  */
 if (isset($_REQUEST['partie_cal'])
 AND $_REQUEST['partie_cal'] !== htmlentities((string)$_REQUEST['partie_cal']))
@@ -78,7 +77,7 @@
 	$ecran_securite_raison = "echelle";
 
 /*
- *     - espace prive
+ * Espace privé
  */
 if (isset($_REQUEST['exec'])
 AND !preg_match(',^[\w-]+$,', (string)$_REQUEST['exec']))
@@ -107,8 +106,8 @@
 	}
 }
 
-/*     - bloque les requetes contenant %00 (manipulation d'include)
- *
+/*
+ * Bloque les requêtes contenant %00 (manipulation d'include)
  */
 if (strpos(
 	@get_magic_quotes_gpc() ?
@@ -117,22 +116,23 @@
 ) !== false)
 	$ecran_securite_raison = "%00";
 
-/*     - bloque les requetes fond=formulaire_
- *
+/*
+ * Bloque les requêtes fond=formulaire_
  */
 if (isset($_REQUEST['fond'])
 AND preg_match(',^formulaire_,i', $_REQUEST['fond']))
 	$ecran_securite_raison = "fond=formulaire_";
 
-/*     - bloque les requetes du type ?GLOBALS[type_urls]=toto (bug vieux php)
- *
+/*
+ * Bloque les requêtes du type ?GLOBALS[type_urls]=toto (bug vieux php)
  */
 if (isset($_REQUEST['GLOBALS']))
 	$ecran_securite_raison = "GLOBALS[GLOBALS]";
 
-/*     - bloque les requetes des bots sur:
- *       les agenda
- *       les paginations entremelees
+/*
+ * Bloque les requêtes des bots sur:
+ * les agenda
+ * les paginations entremélées
  */
 if (_IS_BOT AND (
 	(isset($_REQUEST['echelle']) AND isset($_REQUEST['partie_cal']) AND isset($_REQUEST['type']))
@@ -162,27 +162,29 @@
 if (isset($_REQUEST[$var]) AND is_array($_REQUEST[$var]))
 	$ecran_securite_raison = "xss ".$var;
 
-/* Parade antivirale contre un cheval de troie */
-if(!function_exists('tmp_lkojfghx')){
-function tmp_lkojfghx(){}
-function tmp_lkojfghx2($a=0,$b=0,$c=0,$d=0){
-	// si jamais on est arrive ici sur une erreur php
-	// et qu'un autre gestionnaire d'erreur est defini, l'appeller
-	if($b&&$GLOBALS['tmp_xhgfjokl'])
-		call_user_func($GLOBALS['tmp_xhgfjokl'],$a,$b,$c,$d);
-}
+/*
+ * Parade antivirale contre un cheval de troie
+ */
+if (!function_exists('tmp_lkojfghx')) {
+	function tmp_lkojfghx() {}
+	function tmp_lkojfghx2($a=0, $b=0, $c=0, $d=0) {
+		// si jamais on est arrivé ici sur une erreur php
+		// et qu'un autre gestionnaire d'erreur est défini, l'appeller
+		if ($b&&$GLOBALS['tmp_xhgfjokl'])
+			call_user_func($GLOBALS['tmp_xhgfjokl'],$a,$b,$c,$d);
+	}
 }
 if (isset($_POST['tmp_lkojfghx3']))
 	$ecran_securite_raison = "gumblar";
 
 /*
- * Outils XML mal securises < 2.0.9
+ * Outils XML mal sécurisés < 2.0.9
  */
 if (isset($_REQUEST['transformer_xml']))
 	$ecran_securite_raison = "transformer_xml";
 
 /*
- * Sauvegarde mal securisee < 2.0.9
+ * Sauvegarde mal securisée < 2.0.9
  */
 if (isset($_REQUEST['nom_sauvegarde'])
 AND strstr((string)$_REQUEST['nom_sauvegarde'], '/'))
@@ -194,14 +196,15 @@
 
 /*
  * op permet des inclusions arbitraires ;
- * on verifie 'page' pour ne pas bloquer ... drupal
+ * on vérifie 'page' pour ne pas bloquer ... drupal
  */
 if (isset($_REQUEST['op']) AND isset($_REQUEST['page'])
 AND $_REQUEST['op'] !== preg_replace('/[^\-\w]/', '', $_REQUEST['op']))
 	$ecran_securite_raison = 'op';
 
-
-/* Forms & Table ne se mefiait pas assez des uploads de fichiers */
+/*
+ * Forms & Table ne se méfiait pas assez des uploads de fichiers
+ */
 if (count($_FILES)){
 	foreach($_FILES as $k=>$v){
 		 if (preg_match(',^fichier_\d+$,',$k)
@@ -210,16 +213,22 @@
 	}
 }
 
-/* reinstall=oui un peu trop permissif */
+/*
+ * reinstall=oui un peu trop permissif
+ */
 if (isset($_REQUEST['reinstall'])
 AND $_REQUEST['reinstall'] == 'oui')
 	$ecran_securite_raison = 'reinstall=oui';
 
-/* echappement xss referer */
+/*
+ * Échappement xss referer
+ */
 if (isset($_SERVER['HTTP_REFERER']))
 	$_SERVER['HTTP_REFERER'] = strtr($_SERVER['HTTP_REFERER'], '<>"\'', '[]##');
 
-/* Reinjection des cles en html dans l'admin r19561 */
+/*
+ * Réinjection des clés en html dans l'admin r19561
+ */
 if (strpos($_SERVER['REQUEST_URI'],"ecrire/")!==false){
 	$zzzz=implode("",array_keys($_REQUEST));
 	if (strlen($zzzz)!=strcspn($zzzz,'<>"\''))
@@ -227,6 +236,21 @@
 }
 
 /*
+ * Injection par connect
+ */
+if (isset($_REQUEST['connect'])
+	AND
+	// cas qui permettent de sortir d'un commentaire PHP
+	(strpos($_REQUEST['connect'], "?".">")!==false
+	 OR strpos($_REQUEST['connect'], "\n")!==false
+	 OR strpos($_REQUEST['connect'], "\r")!==false)
+	) {
+	$_REQUEST['connect'] = str_replace(array("?".">", "\r", "\n"), "", $_REQUEST['connect']);
+	if (isset($_GET['connect'])) $_GET['connect'] = $_REQUEST['connect'];
+	if (isset($_POST['connect'])) $_POST['connect'] = $_REQUEST['connect'];
+}
+
+/*
  * S'il y a une raison de mourir, mourons
  */
 if (isset($ecran_securite_raison)) {
@@ -237,15 +261,15 @@
 	header("Content-Type: text/html");
 	die("<html><title>Error 403: Forbidden</title><body><h1>Error 403</h1><p>You are not authorized to view this page ($ecran_securite_raison)</p></body></html>");
 }
+
 /*
- * Fin securite
+ * Fin sécurité
  */
 
 
 
 /*
- * Bloque les bots quand le load deborde
- *
+ * Bloque les bots quand le load déborde
  */
 if (!defined('_ECRAN_SECURITE_LOAD'))
 	define('_ECRAN_SECURITE_LOAD', 4);
diff -Nru spip-2.1.15/ecrire/base/connect_sql.php spip-2.1.16/ecrire/base/connect_sql.php
--- spip-2.1.15/ecrire/base/connect_sql.php	2012-06-12 10:32:34.000000000 -0400
+++ spip-2.1.16/ecrire/base/connect_sql.php	2012-07-03 11:31:38.000000000 -0400
@@ -60,11 +60,7 @@
 		if (!isset($GLOBALS['db_ok'])) {
 		  // fera mieux la prochaine fois
 			if ($install) return false;
-			if ($f AND $readable)
-				spip_log("spip_connect: fichier de connexion '$f' OK.");
-			else
-				spip_log("spip_connect: fichier de connexion '$f' non trouve");
-			spip_log("spip_connect: echec connexion ou serveur $index mal defini dans '$f'.");
+			spip_log("spip_connect: serveur $index mal defini dans '$f'. spip_connect_version: " . @$GLOBALS['spip_connect_version']);
 			// ne plus reessayer si ce n'est pas l'install
 			return $connexions[$index]=false;
 		}
diff -Nru spip-2.1.15/ecrire/exec/auteurs.php spip-2.1.16/ecrire/exec/auteurs.php
--- spip-2.1.15/ecrire/exec/auteurs.php	2012-06-12 10:32:30.000000000 -0400
+++ spip-2.1.16/ecrire/exec/auteurs.php	2012-07-03 11:31:37.000000000 -0400
@@ -56,7 +56,11 @@
 		  lettres_d_auteurs(requete_auteurs($tri, $statut, $recherche), $debut, MAX_AUTEURS_PAR_PAGE, $tri);
 
 
-		$recherche = auteurs_tranches(afficher_n_auteurs($auteurs), $debut, $lettre, $tri, $statut, MAX_AUTEURS_PAR_PAGE, $nombre_auteurs,$cherche);
+
+		$arg = ($statut ? ("&statut=" .urlencode($statut)) : '')
+		  .  ($cherche ? ("&recherche=" . urlencode($cherche)) : '');
+
+		$recherche = auteurs_tranches(afficher_n_auteurs($auteurs), $debut, $lettre, $tri, $statut, MAX_AUTEURS_PAR_PAGE, $nombre_auteurs, $arg);
 
 		if ($cherche){
 			$cherche = htmlspecialchars($cherche);
@@ -80,7 +84,7 @@
 			$visiteurs ? _T('info_visiteurs') :  _T('info_auteurs'),
 				     "auteurs","redacteurs");
 
-		echo bandeau_auteurs($tri, $visiteurs);
+		echo bandeau_auteurs($visiteurs);
 		
 		echo  $trouve, "<div class='nettoyeur'></div>";
 
@@ -91,9 +95,9 @@
 }
 
 // http://doc.spip.org/@bandeau_auteurs
-function bandeau_auteurs($tri, $visiteurs)
+function bandeau_auteurs($visiteurs)
 {
-	global $connect_id_auteur,   $connect_statut,   $connect_toutes_rubriques;
+	global $connect_id_auteur;
 
 	$ret = debut_gauche("auteurs",true) . debut_boite_info(true);
 
@@ -102,16 +106,16 @@
 	else 
 		$ret .= "\n<p class='arial1'>"._T('info_gauche_auteurs'). '</p>';
 
-	if ($connect_statut == '0minirezo')
+	if (autoriser('voir', 'auteur'))
 		$ret .= "\n<p class='arial1'>". _T('info_gauche_auteurs_exterieurs') . '</p>';
 
 	$ret .= fin_boite_info(true);
 
 	$ret .= pipeline('affiche_gauche',array('args'=>array('exec'=>'auteurs'),'data'=>''));
 
-	if ($connect_statut == '0minirezo') {
+	if (autoriser('voir', 'auteur')) {
 
-		if ($connect_toutes_rubriques) 
+		if (autoriser('creer', 'auteur'))
 			$res = icone_horizontale(_T('icone_creer_nouvel_auteur'), generer_url_ecrire("auteur_infos", 'new=oui'), "auteur-24.gif", "creer.gif", false);
 		else $res = '';
 
@@ -174,13 +178,10 @@
 }
 
 // http://doc.spip.org/@auteurs_tranches
-function auteurs_tranches($auteurs, $debut, $lettre, $tri, $statut, $max_par_page, $nombre_auteurs, $cherche='')
+function auteurs_tranches($auteurs, $debut, $lettre, $tri, $statut, $max_par_page, $nombre_auteurs, $arg='')
 {
 	global $spip_lang_right;
 
-	$arg = ($statut ? ("&statut=" .urlencode($statut)) : '')
-	   .  ($cherche ? ("&recherche=" . urlencode($cherche)) : '');
-
 	$res ="\n<tr class='titrem'>"
 	. "\n<th style='width: 20px'>";
 
@@ -292,37 +293,40 @@
 // http://doc.spip.org/@requete_auteurs
 function requete_auteurs($tri, $statut, $recherche=NULL)
 {
-	global $connect_statut, $spip_lang, $connect_id_auteur;
+	global $connect_id_auteur;
 
-	//
-	// Construire la requete
-	//
-	
 	// si on n'est pas minirezo, ignorer les auteurs sans article
 	// sauf les admins, toujours visibles.
 
 	// limiter les statuts affiches
-	if ($connect_statut == '0minirezo') {
+	if (autoriser('voir', 'auteur')) {
 		if ($statut[0]=='!') {
 			  $statut = substr($statut,1); $not = "NOT";
 		} else $not = '';
 		$visit = !statut_min_redac($statut);
 		$statut = preg_split('/\W+/', $statut); 
-		$sql_visible = sql_in("aut.statut", $statut, $not);
+		$where = sql_in("aut.statut", $statut, $not);
 	} else {
-		$sql_visible = "(
+		$where = "(
 			aut.statut = '0minirezo'
 			OR aut.id_auteur=$connect_id_auteur
 			OR " . sql_in('art.statut', array('prop', 'publie'))
 		. ')';
 		$visit = false;
 	}
+	if ($recherche) $where .= " AND $recherche" ;
+	return requete_auteurs_tri($tri, $where, $visit);
+}
+
+function requete_auteurs_tri($tri, $where, $visit=false)
+{
+	global $spip_lang;
 
 	$sql_sel = '';
 	$join = $visit ?
 	 ""
 	 : 
-	 (strpos($sql_visible,'art.statut')?("LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur" . " LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)"):"");
+	 (strpos($where,'art.statut')?("LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur" . " LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)"):"");
 	
 	// tri
 	switch ($tri) {
@@ -332,7 +336,7 @@
 		$join = $visit ?
 		 "LEFT JOIN spip_forum AS lien ON aut.id_auteur=lien.id_auteur"
 		 : ("LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur" 
-		. (strpos($sql_visible,'art.statut')?" LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)":""));
+		. (strpos($where,'art.statut')?" LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)":""));
 		break;
 	
 	case 'site':
@@ -361,9 +365,7 @@
 				"UPPER(aut.nom) AS unom", 
 				$sql_sel),array('',null)),
 		     'FROM' => "spip_auteurs AS aut $join",
-		     'WHERE' => $sql_visible . ($recherche 
-				? " AND $recherche" 
-				: ''),
+		     'WHERE' => $where,
 		     'GROUP BY' => "aut.statut, aut.nom_site, aut.nom, aut.id_auteur", 
 		     'ORDER BY' => $sql_order);
 }
diff -Nru spip-2.1.15/ecrire/inc/autoriser.php spip-2.1.16/ecrire/inc/autoriser.php
--- spip-2.1.15/ecrire/inc/autoriser.php	2012-06-12 10:32:34.000000000 -0400
+++ spip-2.1.16/ecrire/inc/autoriser.php	2012-07-03 11:31:38.000000000 -0400
@@ -356,6 +356,12 @@
 		AND !$qui['restreint'];
 }
 
+function autoriser_auteur_creer_dist($faire, $type, $id, $qui, $opt) {
+	return
+		$qui['statut'] == '0minirezo'
+		AND !$qui['restreint'];
+}
+
 // Autoriser a modifier un groupe de mots $id
 // y compris en ajoutant/modifiant les mots lui appartenant
 // http://doc.spip.org/@autoriser_groupemots_modifier_dist
diff -Nru spip-2.1.15/ecrire/inc/drapeau_edition.php spip-2.1.16/ecrire/inc/drapeau_edition.php
--- spip-2.1.15/ecrire/inc/drapeau_edition.php	2012-06-12 10:32:34.000000000 -0400
+++ spip-2.1.16/ecrire/inc/drapeau_edition.php	2012-07-03 11:31:38.000000000 -0400
@@ -69,7 +69,7 @@
 // http://doc.spip.org/@signale_edition
 function signale_edition ($id, $auteur, $type='article') {
 	$edition = lire_tableau_edition();
-	if ($id_a = $auteur['id_auteur'])
+	if (isset($auteur['id_auteur']) and $id_a = $auteur['id_auteur'])
 		$nom = $auteur['nom'];
 	else
 		$nom = $id_a = $GLOBALS['ip'];
diff -Nru spip-2.1.15/ecrire/inc/lien.php spip-2.1.16/ecrire/inc/lien.php
--- spip-2.1.15/ecrire/inc/lien.php	2012-06-12 10:32:34.000000000 -0400
+++ spip-2.1.16/ecrire/inc/lien.php	2012-07-03 11:31:38.000000000 -0400
@@ -54,7 +54,13 @@
 		$class = "spip_mail";
 	elseif (preg_match('/^<html>/',$texte)) # cf traiter_lien_explicite
 		$class = "spip_url spip_out";
-	elseif (!$class) $class = "spip_out"; # si pas spip_in|spip_glossaire
+	elseif (!$class) {
+	        # spip_out sur les URLs externes
+	        if (preg_match(',^\w+://,iS', $lien)
+	        AND strncasecmp($lien, url_de_base(), strlen(url_de_base()))
+	        )
+                $class = "spip_out"; # si pas spip_in|spip_glossaire
+        }
 
 	// Si l'objet n'est pas de la langue courante, on ajoute hreflang
 	if (!$hlang AND $lang!==$GLOBALS['spip_lang'])
diff -Nru spip-2.1.15/ecrire/inc/session.php spip-2.1.16/ecrire/inc/session.php
--- spip-2.1.15/ecrire/inc/session.php	2012-06-12 10:32:34.000000000 -0400
+++ spip-2.1.16/ecrire/inc/session.php	2012-07-03 11:31:38.000000000 -0400
@@ -103,6 +103,10 @@
 			time() + $duree
 			);
 		spip_log("ajoute session $fichier_session cookie $duree");
+
+		// purger au passage les vieux fichiers de session
+		supprimer_sessions(-1);
+
 		return $_COOKIE['spip_session'];
 	}
 }
@@ -147,7 +151,7 @@
 	$GLOBALS['visiteur_session'] = $sauve;
 
 	// si c'est le meme, rafraichir les valeurs
-	if ($auteur['id_auteur'] == $sauve['id_auteur'])
+	if (isset($sauve['id_auteur']) and $auteur['id_auteur'] == $sauve['id_auteur'])
 		verifier_session();
 }
 
diff -Nru spip-2.1.15/ecrire/inc_version.php spip-2.1.16/ecrire/inc_version.php
--- spip-2.1.15/ecrire/inc_version.php	2012-06-12 10:32:39.000000000 -0400
+++ spip-2.1.16/ecrire/inc_version.php	2012-07-03 11:31:38.000000000 -0400
@@ -410,7 +410,7 @@
 // numero de branche, utilise par les plugins
 // pour specifier les versions de SPIP necessaire
 // il faut s'en tenir a un nombre de decimales fixe ex : 2.0.0, 2.0.0-dev, 2.0.0-beta, 2.0.0-beta2
-$spip_version_branche = "2.1.15";
+$spip_version_branche = "2.1.16";
 // version des signatures de fonctions PHP
 // (= numero SVN de leur derniere modif cassant la compatibilite et/ou necessitant un recalcul des squelettes)
 $spip_version_code = 15375;
diff -Nru spip-2.1.15/ecrire/public/compiler.php spip-2.1.16/ecrire/public/compiler.php
--- spip-2.1.15/ecrire/public/compiler.php	2012-06-12 10:32:39.000000000 -0400
+++ spip-2.1.16/ecrire/public/compiler.php	2012-07-03 11:31:38.000000000 -0400
@@ -969,6 +969,8 @@
 
 	$secondes = spip_timer('calcul_skel');
 	spip_log("COMPIL ($secondes) [$sourcefile] $nom.php");
+	// $connect n'est pas sûr : on nettoie
+	$connect = preg_replace(',[^\w],', '', $connect);
 
 	// Assimiler la fct principale a une boucle anonyme, c'est plus simple
 	$code = new Boucle;
diff -Nru spip-2.1.15/svn.revision spip-2.1.16/svn.revision
--- spip-2.1.15/svn.revision	2012-06-12 09:40:48.000000000 -0400
+++ spip-2.1.16/svn.revision	2012-07-03 11:11:27.000000000 -0400
@@ -1,10 +1,10 @@
 <svn_revision>
 <text_version>
-Origine: svn://trac.rezo.net/spip/tags/spip-2.1.15
-Revision: 19579
-Dernier commit: 2012-06-12 15:40:48 +0200 
+Origine: svn://trac.rezo.net/spip/tags/spip-2.1.16
+Revision: 19678
+Dernier commit: 2012-07-03 17:11:27 +0200 
 </text_version>
-<origine>svn://trac.rezo.net/spip/tags/spip-2.1.15</origine>
-<revision>19579</revision>
-<commit>2012-06-12 15:40:48 +0200 </commit>
+<origine>svn://trac.rezo.net/spip/tags/spip-2.1.16</origine>
+<revision>19678</revision>
+<commit>2012-07-03 17:11:27 +0200 </commit>
 </svn_revision>
\ Pas de fin de ligne à la fin du fichier.

--- End Message ---
--- Begin Message ---
On 05/07/12 17:14, David Prévot wrote:
Done, thanks. I was indeed waiting for your approval, in order not to
mess with the “unstable” status if you'd disagreed with this request
(sorry I forgot to mention that in the first place).

Unblocked.

Regards,

--
Mehdi Dogguy مهدي الدڤي
http://dogguy.org/


--- End Message ---

Reply to: