From 255be8fb01698c6e29929ff7d2c3bb588eb97905 Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Wed, 17 Nov 2021 11:33:17 +0100 Subject: [PATCH] =?UTF-8?q?Fix=20un=20probl=C3=A8me=20recurent=20de=20fuit?= =?UTF-8?q?e=20de=20donn=C3=A9es=20lorsque=20les=20utilisateur=20mettent?= =?UTF-8?q?=20un=20#FORMULAIRE=5FTRUC=20dans=20un=20modeles/xxxx.html=20:?= =?UTF-8?q?=20le=20formulaire=20perd=20son=20dynamisme=20quand=20il=20est?= =?UTF-8?q?=20inclus=20dans=20l'appelant,=20que=20ce=20soit=20via=20un=20<?= =?UTF-8?q?xxxx|>=20ou=20via=20un=20#MODELE{xxx}.=20On=20repere=20le=20cas?= =?UTF-8?q?=20est=20on=20injecte=20du=20PHP=20qui=20appelle=20la=20fonctio?= =?UTF-8?q?n=20executer=5Fbalise=5Fdynamique()=20au=20lieu=20d'injecter=20?= =?UTF-8?q?l'appel=20a=20la=20fonction=20lui=20meme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/balise/formulaire_.php | 15 ++++++++++++++- ecrire/inc_version.php | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/ecrire/balise/formulaire_.php b/ecrire/balise/formulaire_.php index f708e834b4..e05681d430 100644 --- a/ecrire/balise/formulaire_.php +++ b/ecrire/balise/formulaire_.php @@ -135,7 +135,20 @@ function balise_FORMULAIRE__dist($p) { } // sinon renvoyer un code php dynamique - return calculer_balise_dynamique($p, $p->nom_champ, []); + $p = calculer_balise_dynamique($p, $p->nom_champ, []); + + if (!test_espace_prive() + and !empty($p->descr['sourcefile']) + and $f = $p->descr['sourcefile'] + and basename(dirname($f)) === 'modeles') { + // un modele est toujours inséré en texte dans son contenant + // donc si on est dans le public avec un cache on va perdre le dynamisme + // et on risque de mettre en cache les valeurs pre-remplies du formulaire + // on injecte donc le PHP qui va appeler la fonction pour generer le formulaire au lieu de directement la fonction + $p->code = "'<'.'?php echo (".texte_script($p->code)."); ?'.'>'"; + // dans l'espace prive on a pas de cache, donc pas de soucis (et un leak serait moins grave) + } + return $p; } /** diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php index fb9c2f22e6..955e587721 100644 --- a/ecrire/inc_version.php +++ b/ecrire/inc_version.php @@ -449,7 +449,7 @@ define('_SPIP_EXTRA_VERSION', '-dev'); define('_DEV_VERSION_SPIP_COMPAT', '4.0.99'); // version des signatures de fonctions PHP // (= date de leur derniere modif cassant la compatibilite et/ou necessitant un recalcul des squelettes) -$spip_version_code = 20211021; +$spip_version_code = 20211117; // version de la base SQL (= Date + numero incremental a 2 chiffres YYYYMMDDXX) $spip_version_base = 2021021800; -- GitLab