Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1871 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  comportement étrange de BIGNUM

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

comportement étrange de BIGNUM

n°2070552
razuki
Posté le 18-04-2011 à 00:45:51  profilanswer
 

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 :
  1. #include <openssl/bn.h>
  2. #include <stdio.h>
  3. int main(){
  4.   BIGNUM *p = BN_new();
  5.    size_t len = BN_num_bytes(p);
  6.    char *buf = new char[len];
  7.   if(len>0)
  8.     printf("len est positif\n" );
  9.   else
  10.     if(len == 0)
  11.       printf("len est nul\n" );
  12.     else
  13.       printf("len est negatif\n" );
  14.   BN_free(p);
  15.   delete [] buf;
  16.   return 0;
  17. }


 
Merci d'avance pour votre aide.

mood
Publicité
Posté le 18-04-2011 à 00:45:51  profilanswer
 

n°2070553
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 18-04-2011 à 02:24:50  profilanswer
 

Je tente une explication (sans connaître la lib OpenSSL plus que ça) :

 

1) Avant l'appel a BN_num_bytes, il est logique que tu aies une valeur de merde (car non initialisé). Le seul truc qui m'intrigue c'est que gdb t'affiche une valeur négative pour un size_t (qui de mémoire est un alias d'un unsigned int) [:transparency]

 

2) Quand tu fais un BN_new(), et que tu ne lui assignes pas de valeur, BN_num_bytes() doit considérer qu'il n'y a pas de nombre et que donc sa taille est nulle.


Message édité par WiiDS le 18-04-2011 à 02:26:46

---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  comportement étrange de BIGNUM

 

Sujets relatifs
[Java/JEE] [Résolu] Comportement Calendar selon LocaleBug très très étrange sous Excel VBA
VBA / Excel : Bug étrange ...odtPHP : erreur étrange (fichier odt défectueux)
[ KSH ] Etrange comportement d'un while dans un for - RESOLU -Différence comportement entre firefox et ie
Action script : un petit souci étrangecomportement de include_once
SelectBox et comportement onchange 
Plus de sujets relatifs à : comportement étrange de BIGNUM


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR