- fixed memleak in sha1
This commit is contained in:
@@ -34,11 +34,11 @@ hasher_t *hasher_create(hash_algorithm_t hash_algorithm)
|
|||||||
{
|
{
|
||||||
switch (hash_algorithm)
|
switch (hash_algorithm)
|
||||||
{
|
{
|
||||||
case SHA1:
|
case HASH_SHA1:
|
||||||
{
|
{
|
||||||
return (hasher_t*)hasher_sha1_create();
|
return (hasher_t*)hasher_sha1_create();
|
||||||
}
|
}
|
||||||
case MD5:
|
case HASH_MD5:
|
||||||
default:
|
default:
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,8 +32,8 @@
|
|||||||
typedef enum hash_algorithm_e hash_algorithm_t;
|
typedef enum hash_algorithm_e hash_algorithm_t;
|
||||||
|
|
||||||
enum hash_algorithm_e {
|
enum hash_algorithm_e {
|
||||||
SHA1,
|
HASH_SHA1,
|
||||||
MD5
|
HASH_MD5
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -206,22 +206,22 @@ static status_t get_hash(private_hasher_sha1_t *this, chunk_t chunk, u_int8_t *b
|
|||||||
static status_t allocate_hash(private_hasher_sha1_t *this, chunk_t chunk, chunk_t *hash)
|
static status_t allocate_hash(private_hasher_sha1_t *this, chunk_t chunk, chunk_t *hash)
|
||||||
{
|
{
|
||||||
chunk_t allocated_hash;
|
chunk_t allocated_hash;
|
||||||
allocated_hash.ptr = allocator_alloc(BLOCK_SIZE_SHA1);
|
|
||||||
allocated_hash.len = BLOCK_SIZE_SHA1;
|
|
||||||
if (allocated_hash.ptr == NULL)
|
|
||||||
{
|
|
||||||
return OUT_OF_RES;
|
|
||||||
}
|
|
||||||
|
|
||||||
SHA1Update(this, chunk.ptr, chunk.len);
|
SHA1Update(this, chunk.ptr, chunk.len);
|
||||||
if (hash != NULL)
|
if (hash != NULL)
|
||||||
{
|
{
|
||||||
|
allocated_hash.ptr = allocator_alloc(BLOCK_SIZE_SHA1);
|
||||||
|
allocated_hash.len = BLOCK_SIZE_SHA1;
|
||||||
|
if (allocated_hash.ptr == NULL)
|
||||||
|
{
|
||||||
|
return OUT_OF_RES;
|
||||||
|
}
|
||||||
SHA1Final(this, allocated_hash.ptr);
|
SHA1Final(this, allocated_hash.ptr);
|
||||||
this->public.hasher_interface.reset(&(this->public.hasher_interface));
|
this->public.hasher_interface.reset(&(this->public.hasher_interface));
|
||||||
|
|
||||||
|
*hash = allocated_hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
*hash = allocated_hash;
|
|
||||||
|
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user