none
Sécurisation d'une DLL C++ native non managée avec les App Domain ? RRS feed

  • Discussion générale

  • Bonjour à tous/toutes,

    voici ma problématique : j'ai "hérité" d'une DLL C++ développée/compilée à l'origine avec Visual Studio C++ 6. On constate à l'utilisation qu'elle présente un certain nombre de bugs dans la plus pure "tradition" du C++ : pointeurs non testés avant leur utilisation et forcément parfois non initialisés, boucle sur un tableau avec dépassement de l'index max du tableau,... le tout provoquant un "freeze" général de l'application appelant les fonctions de l'API de cette DLL. Pour info., cette DLL est actuellement utilisée par un programme de type EXE écrit en VB6 mais le sera bientôt par un programme écrit en C# avec Visual Studio 2013.

    Question : comment empecher ces "freeze" du programme appelant ?

    Réponse 1 envisagée : débugger cette DLL puis la recompiler...

    Ce que j'ai fait dans un premier temps mais malheureusement, après un bug de corrigé, un autre cas de figure a été constaté donc redebug,... puis un autre... et à chaque fois, bien sur, freeze chez le client qui commence à douter du logiciel appelant...

    Réponse 2 envisagée : encapsuler cette DLL dans un autre composant qui détecterait les plantages sans faire "planter" le programme appelant... D'où ma question : pourrais-je utiliser pour cela les app domain ??? Et si oui comment ?

    Réponse 3 :  celle que je n'ai pas encore envisager sur comment utiliser tel quel un composant dont on ignore la "qualité" sans mettre en péril la qualité de son propre logiciel ?

    Je vous remercie par avance pour vos réponses ou simplement vos remarques.

    Cordialement,

    Sébastien.

    • Type modifié Emile Supiot vendredi 6 novembre 2015 14:34 pas de solution définitive
    lundi 26 octobre 2015 10:19

Toutes les réponses

  • Bonjour, Sébastien,

    Je vous invite à consulter l'article en bas:
    .NET Interop and exception handling in mixed applications
    Merci de nous tenir au courant.

    Cordialement,
    Teodora


    Votez! Appel à la contribution TechNet Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mardi 27 octobre 2015 09:30
    Modérateur
  • Bonjour,

    ce lien est intéressant mais ne s'applique pas forcément à mon cas de figure.

    Effectivement, j'ai une DLL sous forme de fichier binaire uniquement... myDLL.dll compilé avec Visual C++ 6.

    Je n'ai pas accès à son code-sources. je ne peux qu'utiliser des fonctions comme :

    [DllImport("myDLL.dll", EntryPoint = "MyFunction")]

    static extern UInt32 MyFunction(UInt32 a);

    mais parfois dans la fonction "MyFunction" dans la dll en c++ non managé une erreur se produit.

    Cette erreur n'est pas "catchée" et l'appel à MyFunction depuis le code managé est bloquant.

    Mon programme managé reste alors bloqué sur cet appel de fonction.

    Je ne vois pas comment débloquer cet appel sans utiliser un app domain ?

    Pourrais je "catcher" ce problème avec un app domain ?

    encore merci pour le coup de main.

    vendredi 30 octobre 2015 10:31