Je suis pas en forme moi...
Dans mon exemple, sk est un pointeur, situé à l'adresse offsetof(tun, sk).
Donc, si sk->sk_destruct(sk) est appelé, le code appelé est situé à l'adresse pointée par sk, plus offsetof(sk, sk_destruct).
Mais ce n'est qu'un exemple...
Ce qui est marrant c'est que c'est optimisation de gcc qui permet au code d'être exécuté, au lieu de faire un oops.
[^] # Re: Il me manque une piece du puzzle
Posté par neologix . En réponse à la dépêche Exploit local dans le noyau Linux 2.6.30. Évalué à 6.
Dans mon exemple, sk est un pointeur, situé à l'adresse
offsetof(tun, sk).Donc, si
sk->sk_destruct(sk)est appelé, le code appelé est situé à l'adresse pointée par sk, plus offsetof(sk, sk_destruct).Mais ce n'est qu'un exemple...
Ce qui est marrant c'est que c'est optimisation de gcc qui permet au code d'être exécuté, au lieu de faire un oops.