IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Comment sécuriser GetItemFromID()


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 61
    Par défaut [Résolu] Comment sécuriser GetItemFromID()
    Bonjour a tous.
    J'ai developpé une DLL Outlook qui fonctionnent a marveille. Cela dis, j'ai du mal à securiser la methode GetItemFromID(...). En effet quand j'appelle cette methode avec un ID qui n'existe pas, le programme appelant la DLL plante. En fait je n'arrive pas a attraper cette erreur.

    Je l'utilise de cette maniere pas defaut
    mitMel_l = npNameSpace_g.GetItemFromID(psIdMail_p, vtMissing);
    Et j'ai essayé avec different try/catch mais je n'arrive jamais a attraper quoi que ce soit.

    Si vous avez une idée.

    D'avance merci

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Alors, si le plantage est dû à une erreur COM, un try/catch devrait pouvoir rattraper l'exception (_com_error si tu utilises le Compiler COM Support, COleException si tu utilises MFC).

    Si le plantage est dû à un pointeur non valide etc., Ce sera typiquement une exception Win32, qu'on peut rattraper avec du Structured Exception Handling (SEH), avec un __try/__except.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 61
    Par défaut
    Ok merci je vais partir sur ce try/__except que je ne connais.

    J'utilisais deja le try/catch avec erreur com et ca ne faisait pas ce que je voulais.
    En fait ce que je veux faire : c'est pouvoir appeler GetItemFromID() avec un ID qui n'existe pas sans que le programme plante .

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    un conseil: fais un report de bug auprès de Microsoft, car à ma connaissance ce n'est pas censé planter de la sorte.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 61
    Par défaut
    Bin c'est peut etre pas M$ qui plante mais peut etre que c'est le L4G centura ... Je sais pas ... Il faudrais peut etre que je parte en debug ...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 61
    Par défaut
    Oui il semble qu'il faut utiliser un __try/__except mais je ne sais pas trop l'utiliser. Il semble que ca ne s'utilise pas comme un try/catch classic. J'ai trouvé quelques infos sur le net mais je me retrouve toujour avec une erreur à la compile :

    error C2712: Cannot use __try in functions that require object unwinding
    Peut etre que vous pourriez me donner quelques piste pour avancer plus vite.

    Merci.

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    tu ne peux pas utiliser __try / __except dans des fonctions qui utilisent la gestion d'exception C++, ou des fonctions qui ont en variable locale des objets possédant un destructeur.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 61
    Par défaut
    Oui merci. J'utilisais des des mailitem et autres objet ayant des destructeurs. Du coup il faut que je me fasse une methode qui me dis si le GetItemFromID(...) va planter ou pas avant de le lancer vraiment. Je vous met le code quand c'est stable.

    Merci encore medinoc

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 61
    Par défaut
    Bref voila ma petite méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    //*****************
    //* Role:		Determiner si le mel psIdMail_p est dispo dans npNameSpace_g
    //**
    //* Parametres: 
    //*				psIdMail_p --> L'ID du mel qu'on veux tester l'existance
    //**
    //* Predicats:	npNameSpace_g doit etre initialisé
    //**
    //* Retour:		Retourne faux si psIdMail_p n'est pas accessible
    //*				Retourne vrai si psIdMail_p est accessible
    //**
    bool ItemDispo(LPSTR psIdMail_p)
    {
    	bool bRes_l = true;
    	char sTmp_l[500] ;
    	__try
    	{
    		npNameSpace_g.GetItemFromID(psIdMail_p, vtMissing);
    	}
    	__except(1)
    	{
    		sprintf(sTmp_l,"Ce mel n'est pas disponible (%s)",psIdMail_p);
    		AfxMessageBox(sTmp_l);
    		bRes_l = false;
    	}
    	return bRes_l;
    }

Discussions similaires

  1. Comment sécuriser une base ?
    Par Melhiril dans le forum Sécurité
    Réponses: 11
    Dernier message: 16/05/2007, 14h32
  2. Comment sécuriser d'anciens sites developpés en php
    Par youpii dans le forum Sécurité
    Réponses: 3
    Dernier message: 03/01/2007, 14h32
  3. [AJAX] Comment sécuriser ses scripts serveur
    Par vallica dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/10/2006, 13h47
  4. [Sécurité] Comment sécuriser un champ textarea ?
    Par JackBeauregard dans le forum Langage
    Réponses: 32
    Dernier message: 26/09/2006, 14h45
  5. Comment sécuriser la BD ?
    Par bassim dans le forum Bases de données
    Réponses: 6
    Dernier message: 22/08/2005, 01h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo