Bonsoir,
J'essaie de mettre au point un gestionnaire de signal. Le problème que je rencontre est le suivant :
le gestionnaire en fonction du signal reçu met à jour des variables de type sig_atomic_t. Jusque là, pas de problème. Par contre, je voudrais pouvoir controler d'où vient le signal émis. Par l'intermédiaire de la structure siginfo je récupère le pid de l'émetteur :
if (info->si_pid == getppid())
Ici par exemple je vérifie que le père du processus en cours est bien l'émetteur. Par contre, le processus a lancé plusieurs autres taches, et c'est sur celle-ci que je veux effectuer le contrôle. La liste des fonctions 'asynchronous-safe function' étant limité, je pense utiliser afin de déterminer, si le signal émis vient bien du groupe (que je ne confonds pas avec les groupes utilisateurs) de processus de l'application.
if(getppid() == getpgrp(info->si_pid))
J'en viens à ma question :
- un processus extérieur à ceux de l'application, peut-il modifier son groupe (setpgid) de manière à envoyer un signal en usurpant son identité de groupe, et donc tromper le gestionnaire de signal ?
- dans ce cas quelle parade, trouver ? changer de sessions au démarrage ?
J'espère avoir été clair dans mes explications, c'est mon premier post de demande.
Partager