|
@@ -1,9 +1,34 @@
|
|
|
+\section{Motivation}
|
|
|
+
|
|
|
Une autre méthode de cloisonnement qui n'a pas beaucoup été explorée est de
|
|
|
cloisonner l'application par module et non par objet de libvlccore.
|
|
|
|
|
|
-Cette méthode permet d'arriver plus rapidement à une situation où l'ensemble des
|
|
|
-modules de VLC est cloisonné, mais libvlccore ne profite pas du tout de ce
|
|
|
+Cette méthode permet d'arriver plus rapidement à une situation où l'ensemble
|
|
|
+des modules de VLC est cloisonné, mais libvlccore ne profite pas du tout de ce
|
|
|
cloisonnement et il nous reste alors environ 100 000 lignes de code à auditer
|
|
|
-pour s'approcher de loin à la méthode précédente. La technique reste
|
|
|
-intéressante à mentionner comme l'injection montre de façon plus simple comment
|
|
|
-le pattern fonctionne.
|
|
|
+pour s'approcher de loin de la méthode précédente. Il est intéressant de
|
|
|
+mentionner cette technique du point de vue de l'architecture, étant donné
|
|
|
+qu'elle montre une autre façon de procéder à l'injection de la sandbox dans les
|
|
|
+modules et peut souligner de nouveaux défauts dans la conception du code.
|
|
|
+
|
|
|
+Comme on l'a vu dans les premières parties, VLC fonctionne à travers libvlccore
|
|
|
+en instanciant des modules, stockés dans des \inltype{vlc_object_t}. Chaque
|
|
|
+module étant créé puis détruit par le core, tout en fournissant une API commune
|
|
|
+au type de module, il peut être tentant de proposer de nouveaux modules avec un
|
|
|
+type similaire à celui demandé, tout en implémentant la passerelle vers un
|
|
|
+autre module à l'intérieur même.
|
|
|
+
|
|
|
+Avec cette technique, le sandboxing est plus facile à intégrer dans
|
|
|
+l'application mais moins efficace.
|
|
|
+
|
|
|
+\section{Implémentation}
|
|
|
+
|
|
|
+La partie «injection» consiste à complètement rediriger \inltype{module_need}
|
|
|
+vers le cœur de la sandbox pour transformer les requêtes de module vers des
|
|
|
+modules proxies. Le nom du module ou de la classe de module peut correspondre à
|
|
|
+une politique et permet ainsi de décider très finement et automatiquement quel
|
|
|
+module doit être redirigé vers un autre processus, nouveau ou déjà existant.
|
|
|
+
|
|
|
+Il n'y a plus de notion de \inltype{vlc_rpc_handler_t} étant donné que l'on
|
|
|
+manipule directement les modules à travers leur API et que les liens se font au
|
|
|
+niveau du core.
|