OVH Cloud OVH Cloud

Toutes les =c3=a9lections etc. : quelques bugs de nouvelleurs

8 réponses
Avatar
Olivier Miakinen
[diapublication, suivi vers fr.comp.usenet.lecteurs-de-news]

Bonjour,

Sur fr.comp.lang.php, yamo' m'a signalé qu'un article émis par la dernière
version de MesNews avait un titre que plusieurs lecteurs de news ne savent
pas décoder. Vu que l'article en question se trouve sur le cloaque
fr.soc.politique et qu'aucun de nous deux n'a l'intention de s'y abonner,
j'ai émis la suggestion qu'un utilisateur de MesNews écrive le même titre
mais sur fr.test.

(aparté : l'auteur de l'article sur le cloaque, s'il lit fr.test, doit
bien rigoler de voir son titre repris plusieurs dizaines de fois)

Dans cet article je vais décrire quel est le problème, puis dans au moins
une réponse (peut-être plusieurs si c'est trop long) j'examinerai les tests
qui ont été faits avec différents logiciels de news.


Le titre en question, encodé en base64, était le suivant :

> Subject: =?UTF-8?B?VG91dGVzIGxlcyDDqWxlY3Rpb25zIHByw6lzaWRlbnRpZWxsZXMgbm9y?=
> =?UTF-8?B?ZC1hbcOpcmljYWluZXMgZGVwdWlzIGxhIGd1ZXJyZSBk4oCZSXJhayBvbnQgcHLD?=
> =?UTF-8?B?qXNlbnTDqSBkZXMgY2FuZGlkYXRzIHF1aSBs4oCZb250IHNvdXRlbnVl?=

La première ligne de ce titre ne pose aucun problème :
"VG91dGVzIGxlcyDDqWxlY3Rpb25zIHByw6lzaWRlbnRpZWxsZXMgbm9y"
= "Toutes les élections présidentielles nor"

La seconde ligne va aussi si on excepte les quatre derniers caractères "cHLD" :
"ZC1hbcOpcmljYWluZXMgZGVwdWlzIGxhIGd1ZXJyZSBk4oCZSXJhayBvbnQg"
= "d-américaines depuis la guerre d’Irak ont "

Quant à la troisième, ça va si on retire le début "qXNl" :
"bnTDqSBkZXMgY2FuZGlkYXRzIHF1aSBs4oCZb250IHNvdXRlbnVl"
= "nté des candidats qui l’ont soutenue"

Enfin, si on recolle les deux petits morceaux que j'avais écartés, ça donne :
"cHLDqXNl"
= "prése"

Le problème est que le caractère "é" n'est codé ni dans les quatre premiers
caractères ni dans les quatre derniers, mais qu'il est à cheval sur les deux
morceaux, ce qui est explicitement interdit par le RFC 2047 qui définit
l'encodage MIME des entêtes :

<https://tools.ietf.org/html/rfc2047#section-5>
§
Each 'encoded-word' MUST represent an integral number of characters.
A multi-octet character may not be split across adjacent 'encoded-
word's.
§


(À suivre)

--
Olivier Miakinen

8 réponses

Avatar
Olivier Miakinen
Le 22/10/2020 21:52, Olivier Miakinen a écrit :
[diapublication, suivi vers fr.comp.usenet.lecteurs-de-news]

Même chose. Je continuerai probablement à un moment ou un autre sur
fr.comp.usenet.lecteurs-de-news seul, mais pour le moment je garde
fr.test vu que tous les articles de test y sont.
Le titre en question, encodé en base64, était le suivant :
Subject: =?UTF-8?B?VG91dGVzIGxlcyDDqWxlY3Rpb25zIHByw6lzaWRlbnRpZWxsZXMgbm9y? >> =?UTF-8?B?ZC1hbcOpcmljYWluZXMgZGVwdWlzIGxhIGd1ZXJyZSBk4oCZSXJhayBvbnQgcHLD? >> =?UTF-8?B?qXNlbnTDqSBkZXMgY2FuZGlkYXRzIHF1aSBs4oCZb250IHNvdXRlbnVl?


Il y a eu plusieurs tests de DV et yamo'.
Le test de yamo' à 20:34, bien qu'il ne montre pas ce problème parce qu'une
espace au début du titre a décalé les deux octets du « é » entièrement sur
la troisième ligne, montre ce qui pourrait aussi être considéré comme un
bug (mais si c'en est un SeaMonkey a le même) à savoir ne pas supprimer une
éventuelle espace au début.
Le premier test de DV à 19:41 ne montre pas le problème non plus parce que
le titre était trop court et n'allait pas jusqu'au mot « présenté ».
En revanche ses tests de 20:31, 20:42 et 02:44 ont exactement le même bug.
Message-ID:
Message-ID: <5f91d2a9$0$5870$
Message-ID:
Merci, je vais pouvoir envoyer ces références à Arnaud de MesNews.
--
Olivier Miakinen
Avatar
Olivier Miakinen
Le 22/10/2020 22:21, Olivier Miakinen a écrit :
[diapublication, suivi vers fr.comp.usenet.lecteurs-de-news]


Idem.
En revanche ses tests de 20:31, 20:42 et 20:44 ont exactement le même bug.
Message-ID:
Message-ID: <5f91d2a9$0$5870$
Message-ID:

Voyons maintenant comment ont réagi différents lecteurs de news en réponse
à ces articles avec un titre non conforme.
- MesNews a fait un décodage partiel (ce qui était d'ailleurs le reproche
qu'on faisait à sa version 1.08.03 dans le cas d'hexadécimal en minuscules) ;
- NewsPortal est dans les choux (titre vide) ;
- SeaMonkey l'a décodé quand même ;
- Pan a fait comme SeaMonkey ;
- Nemo a décodé seulement l'encoded-word correct, et il a affiché tels quels
les deux qui étaient incorrects, mais il a collé les deux premiers comme
s'ils avaient été tous les deux corrects ;
- MacCafé a fait comme Nemo, sauf que lui les a collés tous les trois comme
si tous avaient été corrects.
Par ailleurs, lorsque le titre était correct, NewsPortal a ajouté une espace
entre deux encoded-words alors qu'il n'aurait pas dû le faire (ce qui est donc
l'exact contraire des bugs de Nemo et MacCafé).
--
Olivier Miakinen
Avatar
yamo'
Salut,
Olivier Miakinen a écrit :
Il y a bien un truc que j'ai dÍ» changer pour ne pas toucher Í  mon
php.ini, c'est de mettre <?php au lieu de <? comme balises de début.
Mais lÍ  je soupçonne plutÍ´t que ce qu'on lui passe n'est pas ce que
l'on croit.

Oui, je le pense, j'ai refait le test en ne décodant qu'avec
headerDecode2 et c'est encore encodé même pour un post anodin de
Seamonkey :
Subject:
=?UTF-8?B?c3VqZXQgYWNjZW50dcOpIGRlIHLDqWbDqXJlbmNlIChTZWFtb25rZXkp?Affiché :
=?UTF-8?B?c3VqZXQgYWNjZW50dcOpIGRlIHLDqWbDqXJlbmNlIChTZWFtb25rZXkp?
Pour tester, je l'ai appliqué deux fois sans succès :
=?UTF-8?B?c3VqZXQgYWNjZW50dcOpIGRlIHLDqWbDqXJlbmNlIChTZWFtb25rZXkp?
En attendant mieux, je laisse l'ancienne fonction.
AU fait, je déplace newsportal.php dans lib ce qui me paraÍ®t plus
logique...
--
Stéphane
Avatar
yamo'
Salut,
yamo' a tapoté le 28/10/2020 17:55:
Il doit y avoir quelque chose dans le php.ini qui diffère.

C'était pire que ça : mon apache tournait avec du php5!
LÍ  j'ai la dernière version de php7.3 mais qui tourne comme si c'était
du php5....
Bon y a du taf, j'ai des erreurs partout.
--
Stéphane
Avatar
Olivier Miakinen
Le 01/11/2020 11:56, yamo' a écrit :
C'était pire que ça : mon apache tournait avec du php5!
LÍ  j'ai la dernière version de php7.3 mais qui tourne comme si c'était
du php5....
Bon y a du taf, j'ai des erreurs partout.

Aͯe... bon courage !
DéjÍ , tu peux commencer par remplacer les balises de début <? par <?php
comme je l'ai fait, parce que ça c'est assuré de fonctionner en PHP 5
comme en PHP 7.
Sinon, si tu ne t'en sors pas avec PHP 7 et qu'il te faut revenir Í  PHP 5,
je peux revoir mon code pour m'assurer qu'il fonctionne dans les deux
versions.
--
Olivier Miakinen
Avatar
yamo'
Olivier Miakinen a tapoté le 01/11/2020 16:15:
Le 01/11/2020 11:56, yamo' a écrit :
C'était pire que ça : mon apache tournait avec du php5!
LÍ  j'ai la dernière version de php7.3 mais qui tourne comme si c'était
du php5....
Bon y a du taf, j'ai des erreurs partout.

Aͯe... bon courage !
DéjÍ , tu peux commencer par remplacer les balises de début <? par <?php
comme je l'ai fait, parce que ça c'est assuré de fonctionner en PHP 5
comme en PHP 7.

Je pense que c'est un des plus gros soucis. Je vais regarder avec la
modification du php.ini et revenir dessus une fois corrigé.
Il y a des <? en pagaille.
Sinon, si tu ne t'en sors pas avec PHP 7 et qu'il te faut revenir Í  PHP 5,
je peux revoir mon code pour m'assurer qu'il fonctionne dans les deux
versions.

Je regarderai tranquillement quand j'aurais suffisamment de temps.
Ce qui m'a étonné c'est quand j'ai vu la version de php qui vient de
debian 8 alors que je suis sur debian 10, il doit y avoir quelques
failles corrigées entre deux!
LÍ , ça fonctionne un peu par miracle donc je vais tester avec des
machines virtuelles.
--
Stéphane
Avatar
yamo'
Corrigé en local.
http://news2web.pasdenom.info/thread.php?group=fr.test
Pour pousser les modifications git en ligne de commande va être utile...
--
Stéphane
Avatar
yamo'
Salut,
Olivier Miakinen a écrit :
[diapublication avec suivi]
En attendant une refonte plus complète parce que le code est plein de
rustines pas belles (et peut-être buguées), voici ce qu'il faut faire
dans newsportal.php.
1) Remplacer l'horrRRRIble fonction headerDecode() par :

Merci Olivier!
J'ai poussé la version 0.50.1f qui fonctionne _réellement_ en php7.3 :
<https://gitlab.com/yamo-nntp/newsportal/-/tags/0.50.1f>
--
Stéphane