MantisBT - Piwigo
View Issue Details
0000913Piwigoauthenticationpublic2009.01.10 10:422009.02.26 21:15
sym_zo 
plg 
normalmajoralways
closedfixed 
2.0.0RC4 
2.0.12.0.1 
any
Apache 1.3.x
0000913: Impossible to connect with an IPv6 address
En effet, lorsque l'on tente de se connecter à Piwigo au moyen d'une adresse IPv6, la connexion échoue à cause d'une fonction vsprintf qui n'a pas assez d'argument.

En fait, cette fonction, utilisée par get_remote_addr_session_hash(), présuppose que la string $_SERVER['REMOTE_ADDR'] contient (au moins) un caractère ".". Malheureusement, lorsque le visiteur est pourvu d'une addresse IPv6, son adresse n'en contient pas, puisqu'une addresse IPv6 est de la forme :
"XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX"
(voir http://fr.wikipedia.org/wiki/IPv6#Adresses_IPv6 [^] )

Par conséquent, vsprintf échoue, ce qui provoque en cascade l'échec de la connexion (dont l'utilisateur n'est pas averti, d'ailleurs).

Voici une proposition de bugfix, qui dans mon cas a résolu le problème (attention, le triple égal est important!) :

function get_remote_addr_session_hash()
{
        $separator = ( FALSE === strpos($_SERVER['REMOTE_ADDR'],'.') ? ':':'.' );
        return vsprintf( "%02X%02X", explode($separator,$_SERVER['REMOTE_ADDR']) );
}


1) obtenir une adresse IPv6
2) Vérifier avec un phpinfo que c'est bien cette adresse qui est stockée par $_SERVER['REMOTE_ADDR']
3) tenter de se connecter à piwigo
erreurs affichées :


Warning: vsprintf() [function.vsprintf]: Too few arguments in /home/jehan/web-projects/labo/phpwebgallery-2.0.0RC4/include/functions_session.inc.php on line 96

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/jehan/web-projects/labo/phpwebgallery-2.0.0RC4/include/functions_session.inc.php:96) in /home/jehan/web-projects/labo/phpwebgallery-2.0.0RC4/include/user.inc.php on line 49

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/jehan/web-projects/labo/phpwebgallery-2.0.0RC4/include/functions_session.inc.php:96) in /home/jehan/web-projects/labo/phpwebgallery-2.0.0RC4/include/user.inc.php on line 49

Warning: Cannot modify header information - headers already sent by (output started at /home/jehan/web-projects/labo/phpwebgallery-2.0.0RC4/include/functions_session.inc.php:96) in /home/jehan/web-projects/labo/phpwebgallery-2.0.0RC4/include/page_header.php on line 83
No tags attached.
Issue History
2009.01.10 10:42sym_zoNew Issue
2009.01.10 10:42sym_zobrowser => any
2009.01.10 10:42sym_zoWeb server => Apache 1.3.x
2009.01.10 11:35plgAssigned To => plg
2009.01.10 11:35plgStatusnew => assigned
2009.01.10 11:35plgTarget Version => 2.0.0
2009.02.26 09:37sym_zoNote Added: 0002505
2009.02.26 21:15plgNote Added: 0002506
2009.02.26 21:15plgStatusassigned => closed
2009.02.26 21:15plgResolutionopen => fixed
2009.02.26 21:15plgFixed in Version => 2.0.1
2009.02.26 21:15plgTarget Version2.0.0 => 2.0.1
2009.02.26 21:15plgSummaryImpossible de se connecter au moyen d'une adresse IPv6 => Impossible to connect with an IPv6 address

Notes
(0002505)
sym_zo   
2009.02.26 09:37   
Bonjour !

Sans vouloir faire le gros ch***, ce serait possible de clore ce bug ? Je vous ai fourni le fix, donc ça pourrait même être fait rapidement ;-) (Enfin... Sauf si je suis incapable d'écrire trois lignes de PHP sans me planter).

Vous êtes géniaux :)
(0002506)
plg   
2009.02.26 21:15   
Thank you for the patch. Sorry for the delay, we were working full time on the website preparation :-) Unfortunately your bug fix is not part of release 2.0.0, but it will be fixed in 2.0.1.

Fixed on branch 2.0 in [Subversion] r3165
Merged on trunk in [Subversion] r3166