Memory leak in gcry_ac_key_destroy?
    Manu Srivastava 
    mastermanu2004 at gmail.com
       
    Sun Jul 20 00:21:15 CEST 2008
    
    
  
Hi,
In the function _gcry_ac_key_destroy, Is there a reason that:
gcry_free(key->data->data) is omitted?
Furthermore, for each element in key->data->data, shouldn't there also
be a gcry_free(key->data->data[i].name)?
Finally, is it reasonable to replace the if(key->data) block with
gcry_ac_data_destroy(key->data)?
I ask because I am using the ac library for encrypting messages and I
need to make sure all memory leaks are plugged.
According to valgrind there is a memory leak tied to memory allocated
in gcry_ac_key_init, and when I place the above two lines in
the destruction function, it fixes it.
-manu
ac.c (~ line 1683)
void
_gcry_ac_key_destroy (gcry_ac_key_t key)
{
  unsigned int i;
  if (key)
    {
      if (key->data)
        {
          for (i = 0; i < key->data->data_n; i++) {
                if (key->data->data[i].mpi != NULL) {
                        gcry_mpi_release (key->data->data[i].mpi);
                        //gcry_free(key->data->data[i].name); *should
insert this*?
                }
          }
          //gcry_free(key->data->data); *should insert this*?
          gcry_free (key->data);
        }
      gcry_free (key);
    }
}
    
    
More information about the Gcrypt-devel
mailing list