mirror of
git://source.winehq.org/git/wine.git
synced 2024-11-05 18:01:34 +00:00
dssenh: Use CRT allocation functions.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
This commit is contained in:
parent
76dc764139
commit
d32f9ef316
1 changed files with 20 additions and 21 deletions
|
@ -31,7 +31,6 @@
|
||||||
#include "ntsecapi.h"
|
#include "ntsecapi.h"
|
||||||
|
|
||||||
#include "wine/debug.h"
|
#include "wine/debug.h"
|
||||||
#include "wine/heap.h"
|
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(dssenh);
|
WINE_DEFAULT_DEBUG_CHANNEL(dssenh);
|
||||||
|
|
||||||
|
@ -88,7 +87,7 @@ static struct container *create_key_container( const char *name, DWORD flags )
|
||||||
{
|
{
|
||||||
struct container *ret;
|
struct container *ret;
|
||||||
|
|
||||||
if (!(ret = heap_alloc_zero( sizeof(*ret) ))) return NULL;
|
if (!(ret = calloc( 1, sizeof(*ret) ))) return NULL;
|
||||||
ret->magic = MAGIC_CONTAINER;
|
ret->magic = MAGIC_CONTAINER;
|
||||||
ret->flags = flags;
|
ret->flags = flags;
|
||||||
if (name) strcpy( ret->name, name );
|
if (name) strcpy( ret->name, name );
|
||||||
|
@ -154,14 +153,14 @@ static struct key *create_key( ALG_ID algid, DWORD flags )
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(ret = heap_alloc_zero( sizeof(*ret) ))) return NULL;
|
if (!(ret = calloc( 1, sizeof(*ret) ))) return NULL;
|
||||||
|
|
||||||
ret->magic = MAGIC_KEY;
|
ret->magic = MAGIC_KEY;
|
||||||
ret->algid = algid;
|
ret->algid = algid;
|
||||||
ret->flags = flags;
|
ret->flags = flags;
|
||||||
if (BCryptOpenAlgorithmProvider( &ret->alg_handle, alg, MS_PRIMITIVE_PROVIDER, 0 ))
|
if (BCryptOpenAlgorithmProvider( &ret->alg_handle, alg, MS_PRIMITIVE_PROVIDER, 0 ))
|
||||||
{
|
{
|
||||||
heap_free( ret );
|
free( ret );
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -173,7 +172,7 @@ static void destroy_key( struct key *key )
|
||||||
BCryptDestroyKey( key->handle );
|
BCryptDestroyKey( key->handle );
|
||||||
BCryptCloseAlgorithmProvider( key->alg_handle, 0 );
|
BCryptCloseAlgorithmProvider( key->alg_handle, 0 );
|
||||||
key->magic = 0;
|
key->magic = 0;
|
||||||
heap_free( key );
|
free( key );
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct key *import_key( DWORD keyspec, BYTE *data, DWORD len )
|
static struct key *import_key( DWORD keyspec, BYTE *data, DWORD len )
|
||||||
|
@ -201,7 +200,7 @@ static struct key *read_key( HKEY hkey, DWORD keyspec, DWORD flags )
|
||||||
|
|
||||||
if (!(value = map_keyspec_to_keypair_name( keyspec ))) return NULL;
|
if (!(value = map_keyspec_to_keypair_name( keyspec ))) return NULL;
|
||||||
if (RegQueryValueExW( hkey, value, 0, &type, NULL, &len )) return NULL;
|
if (RegQueryValueExW( hkey, value, 0, &type, NULL, &len )) return NULL;
|
||||||
if (!(data = heap_alloc( len ))) return NULL;
|
if (!(data = malloc( len ))) return NULL;
|
||||||
|
|
||||||
if (!RegQueryValueExW( hkey, value, 0, &type, data, &len ))
|
if (!RegQueryValueExW( hkey, value, 0, &type, data, &len ))
|
||||||
{
|
{
|
||||||
|
@ -214,7 +213,7 @@ static struct key *read_key( HKEY hkey, DWORD keyspec, DWORD flags )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
heap_free( data );
|
free( data );
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -224,7 +223,7 @@ static void destroy_container( struct container *container )
|
||||||
destroy_key( container->exch_key );
|
destroy_key( container->exch_key );
|
||||||
destroy_key( container->sign_key );
|
destroy_key( container->sign_key );
|
||||||
container->magic = 0;
|
container->magic = 0;
|
||||||
heap_free( container );
|
free( container );
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct container *read_key_container( const char *name, DWORD flags )
|
static struct container *read_key_container( const char *name, DWORD flags )
|
||||||
|
@ -292,7 +291,7 @@ BOOL WINAPI CPAcquireContext( HCRYPTPROV *ret_prov, LPSTR container, DWORD flags
|
||||||
case CRYPT_NEWKEYSET | CRYPT_MACHINE_KEYSET:
|
case CRYPT_NEWKEYSET | CRYPT_MACHINE_KEYSET:
|
||||||
if ((ret = read_key_container( name, flags )))
|
if ((ret = read_key_container( name, flags )))
|
||||||
{
|
{
|
||||||
heap_free( ret );
|
free( ret );
|
||||||
SetLastError( NTE_EXISTS );
|
SetLastError( NTE_EXISTS );
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -348,7 +347,7 @@ static BOOL store_key_pair( struct key *key, HKEY hkey, DWORD keyspec, DWORD fla
|
||||||
if (!(value = map_keyspec_to_keypair_name( keyspec ))) return FALSE;
|
if (!(value = map_keyspec_to_keypair_name( keyspec ))) return FALSE;
|
||||||
|
|
||||||
if (BCryptExportKey( key->handle, NULL, LEGACY_DSA_V2_PRIVATE_BLOB, NULL, 0, &len, 0 )) return FALSE;
|
if (BCryptExportKey( key->handle, NULL, LEGACY_DSA_V2_PRIVATE_BLOB, NULL, 0, &len, 0 )) return FALSE;
|
||||||
if (!(data = heap_alloc( len ))) return FALSE;
|
if (!(data = malloc( len ))) return FALSE;
|
||||||
|
|
||||||
if (!BCryptExportKey( key->handle, NULL, LEGACY_DSA_V2_PRIVATE_BLOB, data, len, &len, 0 ))
|
if (!BCryptExportKey( key->handle, NULL, LEGACY_DSA_V2_PRIVATE_BLOB, data, len, &len, 0 ))
|
||||||
{
|
{
|
||||||
|
@ -361,7 +360,7 @@ static BOOL store_key_pair( struct key *key, HKEY hkey, DWORD keyspec, DWORD fla
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
heap_free( data );
|
free( data );
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -392,7 +391,7 @@ static struct key *duplicate_key( const struct key *key )
|
||||||
|
|
||||||
if (BCryptDuplicateKey( key->handle, &ret->handle, NULL, 0, 0 ))
|
if (BCryptDuplicateKey( key->handle, &ret->handle, NULL, 0, 0 ))
|
||||||
{
|
{
|
||||||
heap_free( ret );
|
free( ret );
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -596,7 +595,7 @@ static BOOL import_key_dss3( struct container *container, ALG_ID algid, const BY
|
||||||
if (!(key = create_key( CALG_DSS_SIGN, flags ))) return FALSE;
|
if (!(key = create_key( CALG_DSS_SIGN, flags ))) return FALSE;
|
||||||
|
|
||||||
size = sizeof(*blob) + (pubkey->bitlenP / 8) * 3;
|
size = sizeof(*blob) + (pubkey->bitlenP / 8) * 3;
|
||||||
if (!(blob = heap_alloc_zero( size )))
|
if (!(blob = calloc( 1, size )))
|
||||||
{
|
{
|
||||||
destroy_key( key );
|
destroy_key( key );
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -630,11 +629,11 @@ static BOOL import_key_dss3( struct container *container, ALG_ID algid, const BY
|
||||||
{
|
{
|
||||||
WARN( "failed to import key %08lx\n", status );
|
WARN( "failed to import key %08lx\n", status );
|
||||||
destroy_key( key );
|
destroy_key( key );
|
||||||
heap_free( blob );
|
free( blob );
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
heap_free( blob );
|
free( blob );
|
||||||
*ret_key = (HCRYPTKEY)key;
|
*ret_key = (HCRYPTKEY)key;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -792,19 +791,19 @@ static struct hash *create_hash( ALG_ID algid )
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(ret = heap_alloc_zero( sizeof(*ret) ))) return NULL;
|
if (!(ret = calloc( 1, sizeof(*ret) ))) return NULL;
|
||||||
|
|
||||||
ret->magic = MAGIC_HASH;
|
ret->magic = MAGIC_HASH;
|
||||||
ret->len = len;
|
ret->len = len;
|
||||||
if (BCryptOpenAlgorithmProvider( &alg_handle, alg, MS_PRIMITIVE_PROVIDER, 0 ))
|
if (BCryptOpenAlgorithmProvider( &alg_handle, alg, MS_PRIMITIVE_PROVIDER, 0 ))
|
||||||
{
|
{
|
||||||
heap_free( ret );
|
free( ret );
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (BCryptCreateHash( alg_handle, &ret->handle, NULL, 0, NULL, 0, 0 ))
|
if (BCryptCreateHash( alg_handle, &ret->handle, NULL, 0, NULL, 0, 0 ))
|
||||||
{
|
{
|
||||||
BCryptCloseAlgorithmProvider( alg_handle, 0 );
|
BCryptCloseAlgorithmProvider( alg_handle, 0 );
|
||||||
heap_free( ret );
|
free( ret );
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -841,7 +840,7 @@ static void destroy_hash( struct hash *hash )
|
||||||
if (!hash) return;
|
if (!hash) return;
|
||||||
BCryptDestroyHash( hash->handle );
|
BCryptDestroyHash( hash->handle );
|
||||||
hash->magic = 0;
|
hash->magic = 0;
|
||||||
heap_free( hash );
|
free( hash );
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL WINAPI CPDestroyHash( HCRYPTPROV hprov, HCRYPTHASH hhash )
|
BOOL WINAPI CPDestroyHash( HCRYPTPROV hprov, HCRYPTHASH hhash )
|
||||||
|
@ -864,13 +863,13 @@ static struct hash *duplicate_hash( const struct hash *hash )
|
||||||
{
|
{
|
||||||
struct hash *ret;
|
struct hash *ret;
|
||||||
|
|
||||||
if (!(ret = heap_alloc( sizeof(*ret) ))) return NULL;
|
if (!(ret = malloc( sizeof(*ret) ))) return NULL;
|
||||||
|
|
||||||
ret->magic = hash->magic;
|
ret->magic = hash->magic;
|
||||||
ret->len = hash->len;
|
ret->len = hash->len;
|
||||||
if (BCryptDuplicateHash( hash->handle, &ret->handle, NULL, 0, 0 ))
|
if (BCryptDuplicateHash( hash->handle, &ret->handle, NULL, 0, 0 ))
|
||||||
{
|
{
|
||||||
heap_free( ret );
|
free( ret );
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
memcpy( ret->value, hash->value, sizeof(hash->value) );
|
memcpy( ret->value, hash->value, sizeof(hash->value) );
|
||||||
|
|
Loading…
Reference in a new issue