php / php/php-src

stack overflow in asan/dom?

Ouverte
#23,118 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Bug Extension: dom Status: Needs Triage Status: Verified
Langage dominant
C
Étoiles
40.4k
Forks
8.1k
Merge moyen
2 j 13 h
PR mergées (30 j)
96

Description

Description

The following code:

<?php
$xml = str_repeat('<a>', 400000) . 'x' . str_repeat('</a>', 400000);
$d=new DOMDocument(); $d->loadXML($xml, LIBXML_PARSEHUGE);
$c = $d->documentElement->cloneNode(true);

Resulted in this output:

    #191 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #192 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #193 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #194 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #195 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #196 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #197 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #198 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #199 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #200 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #201 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #202 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #203 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #204 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #205 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #206 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #207 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #208 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #209 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #210 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #211 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #212 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #213 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #214 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #215 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #216 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #217 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #218 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #219 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #220 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #221 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #222 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #223 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #224 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #225 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #226 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #227 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #228 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #229 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #230 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #231 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #232 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #233 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #234 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #235 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #236 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #237 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #238 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #239 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #240 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #241 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #242 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #243 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #244 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #245 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #246 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #247 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
    #248 0x7fc83e16234b  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
    #249 0x7fc83e16168a  (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)

SUMMARY: AddressSanitizer: stack-overflow ../../../../src/libsanitizer/sanitizer_common/sanitizer_stackdepot.cpp:54 in __sanitizer::StackDepotNode::hash(__sanitizer::StackTrace const&)
==45==ABORTING
USE_ZEND_ALLOC-0
PHP Version
8.6.0
Operating System

ubuntu 22.04

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par reproduire l’exemple PHP 8.6.0 en utilisant DOMDocument::loadXML(), LIBXML_PARSEHUGE et cloneNode(true) sous ASan avec USE_ZEND_ALLOC-0. Suivez le chemin de clonage du DOM et son interaction avec libxml2 ; le travail est terminé lorsque l’entrée profondément imbriquée signalée ne provoque plus de débordement de pile.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
c
Domaine
backend
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.