Partager
Affiche les résultats de 1 à 2 sur 2

Sujet : Le nombre magique qui fait planter Java : 2.2250738585072012e-308

  1. #1
    Inscrit
    September 2010
    Messages
    1 079
    Remerciements
    882
    Remercié(e) 797 fois dans 418 messages
    Pouvoir de réputation
    10

    Exclamation Le nombre magique qui fait planter Java : 2.2250738585072012e-308

    Vous avez peut-être suivi l’histoire au début de l’année concernant un bug critique sur PHP qui permettait de faire planter complètement des serveurs simplement en passant un nombre particulier à un code PHP. Et bien il semblerait que ce ne soit pas mieux côté Java, puisque l’on vient d’apprendre que le même genre de bug fait planter Java à la compilation ainsi qu’à l’exécution

    Pour PHP, le bug était relativement simple : il consistait à faire entrer PHP dans une boucle infinie en le poussant à convertir un nombre à virgule flottante et à précision double d’une taille importante (en fait le plus grand) : 2.2250738585072011e-308.
    Le problème n’affectait que les binaires de PHP en 32 bits. Pour voir si vous êtes vulnérables, vous pouvez d’ailleurs tester ce code PHP :
    <?php /* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.txt | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | [email protected] so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Author: Johannes Schlueter <[email protected]> | +----------------------------------------------------------------------+ */ if (PHP_SAPI != 'cli') { die("Please run this test from CLI!\n"); } ini_set('display_errors', 1); ini_set('output_buffering', 0); error_reporting(-1); if (!ini_get('safe_mode')) { set_time_limit(1); } echo "Testing float behaviour. If this script hangs or terminates with an error ". "message due to maximum execution time limit being reached, you should ". "update your PHP installation asap!\n"; echo "For more information refer to <http://bugs.php.net/53632>.\n"; $d = (double)"2.2250738585072011e-308"; echo "Your system seems to be safe.\n"; ?>

    Si le script affiche la dernière ligne, c’est cool, sinon il partira dans une boucle infinie et vous n’en verrez jamais la fin.
    Et Java dans tout ça ?

    Tout le monde critiquait PHP lors de la découverte du bug, mais finalement ce n’est pas mieux pour les autres puisqu’on vient d’apprendre que Java plante en convertissant le nombre 2.2250738585072012e-308.
    Et le pire pour Oracle et Sun, c’est que le bug a été signalé en… 2009 mais aussi en….2001!
    Dix ans plus tard le bug n’est toujours pas corrigé.
    Plus drôle, le rapport de bug de 2009 est bien disponible, par contre celui de 2001 qui fait mauvais effet a été supprimé…dans la journée d’hier. Heureusement le cache de Google fait des merveilles et l’on voit bien que le nombre 2.225073858507201E-308 est cité.

    Du coup, comme le signale un commentaire sur la source originale, il est possible de faire planter des serveurs Tomcat de manière assez simple avec une commande du type :
    curl -H "Accept-Language: en-us;q=2.2250738585072012e-308" http://adresse

    Si le serveur appelle la fonction getLocale() sur cette requête, cela provoquera un plantage du thread. Les correctifs ont été apportés à Tomcat il y a deux jours, pas sûr que les serveurs sur le Web soient déjà patchés…
    Bien sûr, l’équipe d’Oracle travaille ardemment sur le sujet. Nous voilà rassurés
    (S: papygeek.com)



  2. Les membres suivants ont remercié Dragonx2 pour cet excellent message :


  3. # ADS
    Inscrit
    Toujours
    Messages
    Plusieurs






     
  4. #2
    Inscrit
    September 2010
    Lieu
    Alger
    Messages
    1 768
    Remerciements
    599
    Remercié(e) 893 fois dans 585 messages
    Pouvoir de réputation
    18

    Re : Le nombre magique qui fait planter Java : 2.2250738585072012e-308

    Déjà rapporté à Oracle (du moins à Sun à l'époque) en 2001, ce bug fut une nouvelle fois décelé en 2009, mais ce n'est que mardi dernier qu'Oracle l'a corrigé en proposant un patch pour les JRE 6 version 23 et précédentes pour Windows, Solaris et Linux. Oracle ne livre pas d'explication à son étonnant manque de réactivité.

    Source

Sujets similaires

  1. Réponses: 1
    Dernier message: 26/09/2012, 13h03
  2. TP Java
    Par BenHaa dans le forum Programmation
    Réponses: 12
    Dernier message: 13/02/2012, 21h22
  3. Algérie Télécom Internet: le nombre d'abonnés a doublé en un an !
    Par Essedik dans le forum Fournisseurs d'accès à Internet
    Réponses: 7
    Dernier message: 18/01/2012, 15h38
  4. L'amour c'est magique♥♥
    Par Maverick dans le forum Paranormales & Insolites
    Réponses: 10
    Dernier message: 25/11/2011, 19h32
  5. Chine : le nombre de sites a diminué de 41 %
    Par Essedik dans le forum Actualité informatique et high tech
    Réponses: 0
    Dernier message: 15/07/2011, 12h36

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas modifier vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé



Liens annexes