Qu'est-ce qu'un pointeur suspendu?
Un pointeur en suspens est un défaut de programmation qui se produit dans le codage orienté objet lorsqu'un objet pointeur pointe vers un autre objet qui n'existe plus. Dans ce cas, un pointeur n'est pas un pointeur de souris, mais un objet pointeur destiné à envoyer l'utilisateur à un autre objet. Cette faille crée des bogues subtils qui peuvent s’aggraver avec le temps et pose également un problème de sécurité que des pirates informatiques qualifiés peuvent attaquer. Un pointeur en suspens se produit lorsqu'un programmeur efface l'objet sur lequel on pointe mais ne supprime pas le pointeur lui-même.
Dans le codage orienté objet, dans lequel le codage est séparé en objets, il existe une instance appelée pointeur. L'instance de pointeur est placée quelque part dans le programme, généralement dans un menu, et conduit l'utilisateur vers un autre objet. Par exemple, si l'utilisateur met en surbrillance une section d'un menu, un autre menu - une liste déroulante - apparaît. Cela permet au programmeur de configurer plusieurs objets dans une section sans encombrer la section.
L'erreur de pointeur en suspens se manifeste lorsqu'un programmeur efface l'objet pointé. Si le programmeur efface également l'instance du pointeur, il n'y aura pas de problème. Si le programmeur oublie et conserve le pointeur dans le codage, cela crée un pointeur suspendu et présente des problèmes de qualité et de sécurité.
En termes de qualité, un pointeur suspendu a l'air négligé et crée des bugs subtils. En effet, le programme ne sait pas comment agir, car on lui dit de faire quelque chose mais ne le peut pas car l'objet a disparu. Cet acte crée un code aléatoire ou le détériore de manière subtile et difficile à détecter. Ces bogues peuvent être aussi minimes que faire avancer le programme un peu plus lentement, mais peuvent éventuellement rendre le programme - et même l'ordinateur - inopérant.
La plupart des programmes avec des pointeurs en suspens fonctionneront initialement et pourront continuer à fonctionner pendant des mois voire des années avant que les erreurs ne deviennent évidentes. Même les programmes qui effectuent des calculs, c'est-à-dire le pointeur qui se trouve dans la formule, peuvent toujours être en mesure de faire des calculs simples. C'est l'une des raisons pour lesquelles il peut être si difficile de trouver des pointeurs en suspens.
Jusqu'en 2007, le pointeur suspendu ne créait que des problèmes de sécurité en théorie. La société de logiciels Watchfire® a ensuite créé un programme qui montrait comment exploiter les pointeurs en suspens, faisant du risque de sécurité une réalité. Les pirates sont capables d'infiltrer un programme via ce bogue et d'injecter leur propre code dans le programme défectueux.