J'ai reçu un devoir qui me demandait d'appeler une fonction sans l'appeler explicitement, en utilisant un dépassement de tampon. Le code est fondamentalement ceci:Comment appeler le dépassement de tampon?
#include <stdio.h>
#include <stdlib.h>
void g()
{
printf("now inside g()!\n");
}
void f()
{
printf("now inside f()!\n");
// can only modify this section
// cant call g(), maybe use g (pointer to function)
}
int main (int argc, char *argv[])
{
f();
return 0;
}
Bien que je ne sache pas comment procéder. J'ai pensé à changer l'adresse de retour pour le compteur de programme afin qu'il passe directement à l'adresse de g(), mais je ne sais pas comment y accéder. Quoi qu'il en soit, les pourboires seront super.
4 upvotes pour une question de devoirs! Le PO n'a même pas trouvé la question ... wow, certaines personnes sont facilement impressionnées. – Lazarus
@Lazarus, j'ai upvoted votre commentaire. Oh oh!:-) –
@Lazarus le fait que ce soit une question de devoirs n'a rien à voir avec le fait que je trouve ça intéressant. Je l'ai également mis à la hausse parce que je veux encourager des questions intéressantes de devoirs plutôt que le simple "j'ai fermé le tampon de fichier et maintenant quand j'essaye de lire du dossier cela ne fonctionne pas. (En d'autres termes, je remets en cause les questions auxquelles je ne connais pas la réponse, mais je veux) – Yacoby