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 :

comportement étrange de BIGNUM


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 630
    Par défaut comportement étrange de BIGNUM
    Bonjour,
    j'utilise la bibliothèque d'openssl pour manipuler des grands nombres : BIGNUM.
    Quand j'execute le code ci-dessous, j'obtiens : len est nul alors que je m'attendais à un len est positif
    Est ce que quelqu'un pourrait m'aider ? quand je debug avec gdb:
    1) il m'affiche une taille du genre len = 140737488347920 juste avant l'appel BN_num_bytes(p). BN_num_bytes(p) retourne la taille en mémoire qu'occupe le grand nombre p.( http://www.openssl.org/docs/crypto/BN_num_bytes.html )
    2) il m'affiche len = 0 juste après BN_num_bytes.

    Mes questions :
    a) quand on debug, pourquoi AVANT MEME d'executer BIGNUM *p = BN_new();, on peut déja obtenir la valeur de len = 140737488347920 ? O_o
    b) pourquoi BN_num_bytes(p) retourne len = 0 . Ce qui serait à peu près logique pour moi c'est l'inverse... len = 0 avant d'arriver à BN_num_bytes(p) puis celle ci renvoie la taille > 0.

    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
    #include <openssl/bn.h>
    #include <stdio.h>
     
    int main(){
      BIGNUM *p = BN_new();
       size_t len = BN_num_bytes(p);
       char *buf = new char[len];
      if(len>0)
        printf("len est positif\n");
      else 
        if(len == 0)
          printf("len est nul\n");
        else
          printf("len est negatif\n");
     
      BN_free(p);
      delete [] buf;
      return 0;
    }
    Merci d'avance pour votre aide.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,

    Citation Envoyé par ikuzar Voir le message
    a) quand on debug, pourquoi AVANT MEME d'executer BIGNUM *p = BN_new();, on peut déja obtenir la valeur de len = 140737488347920 ? O_o
    Tant que tu n'as pas alloué ton objet dynamique, l'utiliser rend des résultats farflelus. C'est normal car ton pointeur n'étant pas initialisé, il a une valeur quelconque. En fait, l'utilisation de p avant d'avoir appelé BN_new est un risque de plantage.


    Citation Envoyé par ikuzar Voir le message
    b) pourquoi BN_num_bytes(p) retourne len = 0 . Ce qui serait à peu près logique pour moi c'est l'inverse... len = 0 avant d'arriver à BN_num_bytes(p) puis celle ci renvoie la taille > 0.
    Je ne connais pas ta bibliothèque mais j'imagine que la taille démarre à 0 et grandit au fur et à mesure du besoin.

Discussions similaires

  1. [Forms6i] Un IF-ELSIF au comportement étrange
    Par lafouine dans le forum Forms
    Réponses: 11
    Dernier message: 13/09/2005, 15h40
  2. Comportement étrange apres une désinstallation
    Par Sunchaser dans le forum Excel
    Réponses: 4
    Dernier message: 06/08/2005, 19h44
  3. comportement étrange d'une jointure ...
    Par amenis dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 10/02/2005, 21h27
  4. [Système][Runtime][Exec] Comportement étrange au lancement de BeSweet
    Par divxdede dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 06/06/2004, 09h54
  5. Réponses: 2
    Dernier message: 22/09/2003, 11h23

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