Re: BN_new/BN_init/BN_free

2013-05-03 Thread Jakob Bohm

On 5/3/2013 4:57 AM, Tom marchand wrote:

Good eye but that's not it.  The code below should read BN_free(Res).
Thanks.


On May 2, 2013, at 10:42 PM, Jeremy Farrell wrote:


From: Tom marchand [mailto:tpmarch...@gmail.com]
Sent: Friday, May 03, 2013 2:55 AM

I am using the following code to create a temporary BIGNUM  to hold
the result of multiplication:

BIGNUM*Res;

while(!Done)
{
Res=BN_new();
BN_init(Res);

BN_mul(Res,A,B,Ctx);

BN_free();

}

This code works with the exception that BN_free() is not releasing the
memory allocated to Res.  I already have a workaround but I am
wondering why the memory isn't being released. In production the code
runs for hours and is causing a significant memory leak.  I am I
misusing BN_new and BN_free? The code is running on OSX 10.5.8,
Openssl 0.9.7l.  I get the same result with OpenSSL 1.0.1e.


BN_free(Res);  ???


Remove the call to BN_init(Res).

BN_new() sets a flag in Res that says that BN_free(Res) should free
both the digit buffer at Res-d and Res itself.

BN_Init() sets the flag that says that BN_free(Res) should free only
Res-d.

The intended usage is EITHER:

void foo(const BIGNUM* A, const BIGNUM* B)
{
   BIGNUM*Res;
   BN_CTX*Ctx = BN_CTX_new();

   while(!Done)
   {
   Res=BN_new();

   BN_mul(Res,A,B,Ctx);

   BN_free_clear(Res);
   }

   BN_CTX_free(Ctx)
}

OR

void bar(const BIGNUM* A, const BIGNUM* B)
{
   BIGNUMRes;
   BN_CTXCtx;

   BN_CTX_init(Ctx);

   while(!Done)
   {
   BN_init(Res);

   BN_mul(Res,A,B,Ctx);

   BN_free_clear(Res);
   }

   BN_CTX_free(Ctx)
}

The choice between the two styles is a matter of optimization specific 
to the compiler you use and the actual variable lifetimes in you 
application.



Enjoy

Jakob
--
Jakob Bohm, CIO, Partner, WiseMo A/S.  http://www.wisemo.com
Transformervej 29, 2730 Herlev, Denmark.  Direct +45 31 13 16 10
This public discussion message is non-binding and may contain errors.
WiseMo - Remote Service Management for PCs, Phones and Embedded
__
OpenSSL Project http://www.openssl.org
User Support Mailing Listopenssl-users@openssl.org
Automated List Manager   majord...@openssl.org


RE: BN_new/BN_init/BN_free

2013-05-02 Thread Jeremy Farrell
 From: Tom marchand [mailto:tpmarch...@gmail.com]
 Sent: Friday, May 03, 2013 2:55 AM
 
 I am using the following code to create a temporary BIGNUM  to hold
 the result of multiplication:
 
 BIGNUM*Res;
 
 while(!Done)
 {
   Res=BN_new();
   BN_init(Res);
 
   BN_mul(Res,A,B,Ctx);
 
   BN_free();
 
 }
 
 This code works with the exception that BN_free() is not releasing the
 memory allocated to Res.  I already have a workaround but I am
 wondering why the memory isn't being released. In production the code
 runs for hours and is causing a significant memory leak.  I am I
 misusing BN_new and BN_free? The code is running on OSX 10.5.8,
 Openssl 0.9.7l.  I get the same result with OpenSSL 1.0.1e.

BN_free(Res);  ???
__
OpenSSL Project http://www.openssl.org
User Support Mailing Listopenssl-users@openssl.org
Automated List Manager   majord...@openssl.org


Re: BN_new/BN_init/BN_free

2013-05-02 Thread Tom marchand
Good eye but that's not it.  The code below should read BN_free(Res).   
Thanks.



On May 2, 2013, at 10:42 PM, Jeremy Farrell wrote:


From: Tom marchand [mailto:tpmarch...@gmail.com]
Sent: Friday, May 03, 2013 2:55 AM

I am using the following code to create a temporary BIGNUM  to hold
the result of multiplication:

BIGNUM  *Res;

while(!Done)
{
Res=BN_new();
BN_init(Res);

BN_mul(Res,A,B,Ctx);

BN_free();

}

This code works with the exception that BN_free() is not releasing  
the

memory allocated to Res.  I already have a workaround but I am
wondering why the memory isn't being released. In production the code
runs for hours and is causing a significant memory leak.  I am I
misusing BN_new and BN_free? The code is running on OSX 10.5.8,
Openssl 0.9.7l.  I get the same result with OpenSSL 1.0.1e.


BN_free(Res);  ???
__
OpenSSL Project http://www.openssl.org
User Support Mailing Listopenssl-users@openssl.org
Automated List Manager   majord...@openssl.org


__
OpenSSL Project http://www.openssl.org
User Support Mailing Listopenssl-users@openssl.org
Automated List Manager   majord...@openssl.org