sandbox_pattern_modules.tex 1.9 KB

123456789101112131415161718192021222324252627282930313233343536
  1. \section{Motivation}
  2. Une première méthode de cloisonnement qui n'a pas beaucoup été explorée est de
  3. cloisonner l'application par module et non par objet de libvlccore.
  4. Cette méthode permet d'arriver plus rapidement à une situation où l'ensemble
  5. des modules de VLC est cloisonné, mais libvlccore ne profite pas du tout de ce
  6. cloisonnement et il nous reste alors environ 100 000 lignes de code à auditer
  7. pour s'approcher de loin de la méthode précédente. Il est intéressant de
  8. mentionner cette technique du point de vue de l'architecture, étant donné
  9. qu'elle montre une autre façon de procéder à l'injection de la sandbox dans les
  10. modules et peut souligner de nouveaux défauts dans la conception du code.
  11. Comme on l'a vu dans les premières parties, VLC fonctionne à travers libvlccore
  12. en instanciant des modules, stockés dans des \inltype{vlc_object_t}. Chaque
  13. module étant créé puis détruit par le core, tout en fournissant une API commune
  14. au type de module, il peut être tentant de proposer de nouveaux modules avec un
  15. type similaire à celui demandé mais qui jouerait le rôle de passerelle vers le
  16. module réel dans un autre processus.
  17. Avec cette technique, le sandboxing est plus facile à intégrer dans
  18. l'application mais moins efficace.
  19. \section{Implémentation}
  20. La partie \og{}injection\fg{} consiste à complètement rediriger \inltype{module_need}
  21. vers le cœur de la sandbox pour transformer les requêtes de module vers des
  22. modules proxies. Le nom du module ou de la classe de module peut correspondre à
  23. une politique et permet ainsi de décider très finement et automatiquement quel
  24. module doit être redirigé vers un autre processus, nouveau ou déjà existant.
  25. C'est à ce moment que les étages définis précédemment vont intervenir pour
  26. permettre d'écrire le code de façon naturelle.
  27. Néanmoins, cette technique n'a pas été implémenté à cause des défauts
  28. d'isolation qu'elle possédait.