A
Andrea
I wrote this code:
void * xmalloc (size_t size){
register void *value = OPENSSL_malloc(size);
if (value == 0)
printf("virtual memory exhausted");
return value;
}
int _chooseTSK(char* message,int seed){
_hash hash,hash2;
char *strp,*prova,*res;
int result;
BIGNUM *mess,*cmp,*rem,*k;
BN_CTX *ctx;
mess=BN_new();rem=BN_new();k=BN_new();cmp=BN_new();
ctx = BN_CTX_new();
_evp_hash(&hash,message);
prova=xmalloc(2*strlen(hash.digest)+1);
strcpy(prova,hex2str(hash.digest,hash.digest_size));
BN_hex2bn(&mess,(const char*) prova);
BN_set_word(k,K);
BN_mod(rem,mess,k,ctx);
strp=xmalloc(BN_num_bytes(mess));
strp = BN_bn2dec(mess);
res = BN_bn2dec(rem);
result=atoi((const char *) res);
_evp_hash(&hash2,message);
BN_dec2bn(&cmp,(const char*) hash2.digest);
OPENSSL_free(strp);
OPENSSL_free(mess);
OPENSSL_free(rem);
OPENSSL_free(k);
OPENSSL_free(cmp);
BN_CTX_end(ctx);
return result;
}
int main(int argc,char** argv){
int i,j;
char* prova;
char* speriamo="spero";
prova=xmalloc(strlen(argv[1])+1+5);
for(i=0;i<10;i++){
printf("\n%d",_chooseTSK(argv[1],i));
}
printf("\n");
for(j=0;j<1;j++){
for(i=0;i<1000;i++){
sprintf( prova, "%s|%d",argv[1],i);
printf("\n%d: %d",i,_chooseTSK(prova,i));
*prova="\0";
}
}
free(prova);
return 0;
}
During the execution of this program i always obtain unpredictable
segmentation fault. After running it trough gdb debugger it tolds me
this:
Program received signal SIGSEGV, Segmentation fault.
0x08048b84 in main (argc=1, argv=0xbff8ac34) at parm_utility.c:48
48 prova=xmalloc(strlen(argv[1])+1+5);
But i receive seg fault some time after 5 iteration sometime after 100
iteration,
any suggestion?
void * xmalloc (size_t size){
register void *value = OPENSSL_malloc(size);
if (value == 0)
printf("virtual memory exhausted");
return value;
}
int _chooseTSK(char* message,int seed){
_hash hash,hash2;
char *strp,*prova,*res;
int result;
BIGNUM *mess,*cmp,*rem,*k;
BN_CTX *ctx;
mess=BN_new();rem=BN_new();k=BN_new();cmp=BN_new();
ctx = BN_CTX_new();
_evp_hash(&hash,message);
prova=xmalloc(2*strlen(hash.digest)+1);
strcpy(prova,hex2str(hash.digest,hash.digest_size));
BN_hex2bn(&mess,(const char*) prova);
BN_set_word(k,K);
BN_mod(rem,mess,k,ctx);
strp=xmalloc(BN_num_bytes(mess));
strp = BN_bn2dec(mess);
res = BN_bn2dec(rem);
result=atoi((const char *) res);
_evp_hash(&hash2,message);
BN_dec2bn(&cmp,(const char*) hash2.digest);
OPENSSL_free(strp);
OPENSSL_free(mess);
OPENSSL_free(rem);
OPENSSL_free(k);
OPENSSL_free(cmp);
BN_CTX_end(ctx);
return result;
}
int main(int argc,char** argv){
int i,j;
char* prova;
char* speriamo="spero";
prova=xmalloc(strlen(argv[1])+1+5);
for(i=0;i<10;i++){
printf("\n%d",_chooseTSK(argv[1],i));
}
printf("\n");
for(j=0;j<1;j++){
for(i=0;i<1000;i++){
sprintf( prova, "%s|%d",argv[1],i);
printf("\n%d: %d",i,_chooseTSK(prova,i));
*prova="\0";
}
}
free(prova);
return 0;
}
During the execution of this program i always obtain unpredictable
segmentation fault. After running it trough gdb debugger it tolds me
this:
Program received signal SIGSEGV, Segmentation fault.
0x08048b84 in main (argc=1, argv=0xbff8ac34) at parm_utility.c:48
48 prova=xmalloc(strlen(argv[1])+1+5);
But i receive seg fault some time after 5 iteration sometime after 100
iteration,
any suggestion?