• [^] # Re: Pas uniquement string

    Posté par . En réponse au journal Switch, chaîne constante et c++. Évalué à 3.

    Qu'on se comprenne.

    Le fait que les variables non-initialisées sont bcp plus dangereuses que les variables initialisées à une valeur par défaut est un fait établi. Ce n'est pas un cas d'opinion.

    C'est quoi la valeur par défaut d'un pointeur de fonction qui as du sens ? nullptr, ou une fonction au hasard ? Les deux cas n'ont pas de sens et sont dangereux, bref, avoir un pointeur "default-initialised" n'as pas de sens.

    nullptr est la bonne valeur, et la raison est super simple :

    • nullptr assure que si la fonction est appelée ton soft crashe (accès à la page d'addresse 0 qui n'est pas mappée --> aucune exécution de code) sans pouvoir permettre d'exécution de code non controllée
    • laisser le pointeur non initiliasé permet à un attaquant de manipuler le soft jusqu'à ce qu'il ait la valeur qu'il veut au bon endroit (sur la stack en causant certains appels à être fait pour mettre les valeurs qu'il veut sur la stack, en mémoire avec un heap spray) et lui permettre ainsi d'exécuter du code arbitraire

    Bref tu peux penser ce que tu veux, mais si tu oses aller donner ton explication à n'importe quelle personne en sécurité (moi par exemple, qui a passé les 12 dernières années dans le milieu) tu vas leur filer un arrèt cardiaque tellement ton explication ne tient absolument pas la route et démontre un manque de compréhension des enjeux.