Patch by Samuel SerapiĆ³n with some modifications by me after discussing it with Art Yerkes
See issue #3387 for more details.
svn path=/trunk/; revision=34297
/* For now, don't worry about the user's identity. */
Context = (PWINDNS_CONTEXT)RtlAllocateHeap( RtlGetProcessHeap(), 0,
sizeof( WINDNS_CONTEXT ) );
/* For now, don't worry about the user's identity. */
Context = (PWINDNS_CONTEXT)RtlAllocateHeap( RtlGetProcessHeap(), 0,
sizeof( WINDNS_CONTEXT ) );
+
+ if(!Context){
+ *ContextHandle = 0;
+ return ERROR_OUTOFMEMORY;
+ }
+
/* The real work here is to create an adns_state that will help us
* do what we want to later. */
adns_status = adns_init( &Context->State,
/* The real work here is to create an adns_state that will help us
* do what we want to later. */
adns_status = adns_init( &Context->State,
0 );
if( adns_status != adns_s_ok ) {
*ContextHandle = 0;
0 );
if( adns_status != adns_s_ok ) {
*ContextHandle = 0;
+ RtlFreeHeap( RtlGetProcessHeap(), 0, Context );
return DnsIntTranslateAdnsToDNS_STATUS( adns_status );
} else {
*ContextHandle = (HANDLE)Context;
return DnsIntTranslateAdnsToDNS_STATUS( adns_status );
} else {
*ContextHandle = (HANDLE)Context;
RtlFreeHeap( RtlGetProcessHeap(), 0, Context );
}
RtlFreeHeap( RtlGetProcessHeap(), 0, Context );
}
sizeof( WCHAR ) * (StrLenWc + 1) );
mbstowcs( Buffer, Name, StrLenWc + 1 );
Status = DnsValidateName_W( Buffer, Format );
sizeof( WCHAR ) * (StrLenWc + 1) );
mbstowcs( Buffer, Name, StrLenWc + 1 );
Status = DnsValidateName_W( Buffer, Format );
- RtlFreeHeap( GetProcessHeap(), 0, Buffer );
+ RtlFreeHeap( RtlGetProcessHeap(), 0, Buffer );
if( adns_error != adns_s_ok ) {
adns_finish( astate );
if ( CurrentName != Name ) {
if( adns_error != adns_s_ok ) {
adns_finish( astate );
if ( CurrentName != Name ) {
- RtlFreeHeap( CurrentName, 0, GetProcessHeap() );
+ RtlFreeHeap( RtlGetProcessHeap(), 0, CurrentName );
}
return DnsIntTranslateAdnsToDNS_STATUS( adns_error );
}
if( answer && answer->rrs.addr ) {
if ( CurrentName != Name ) {
}
return DnsIntTranslateAdnsToDNS_STATUS( adns_error );
}
if( answer && answer->rrs.addr ) {
if ( CurrentName != Name ) {
- RtlFreeHeap( CurrentName, 0, GetProcessHeap() );
+ RtlFreeHeap( RtlGetProcessHeap(), 0, CurrentName );
}
*QueryResultSet =
(PDNS_RECORD)RtlAllocateHeap( RtlGetProcessHeap(), 0,
}
*QueryResultSet =
(PDNS_RECORD)RtlAllocateHeap( RtlGetProcessHeap(), 0,
NULL == answer->cname ) {
adns_finish( astate );
if ( CurrentName != Name ) {
NULL == answer->cname ) {
adns_finish( astate );
if ( CurrentName != Name ) {
- RtlFreeHeap( CurrentName, 0, GetProcessHeap() );
+ RtlFreeHeap( RtlGetProcessHeap(), 0, CurrentName );
}
return ERROR_FILE_NOT_FOUND;
}
if ( CurrentName != Name ) {
}
return ERROR_FILE_NOT_FOUND;
}
if ( CurrentName != Name ) {
- RtlFreeHeap( CurrentName, 0, GetProcessHeap() );
+ RtlFreeHeap( RtlGetProcessHeap(), 0, CurrentName );
}
CurrentName = xstrsave( answer->cname );
if ( NULL == CurrentName ) {
}
CurrentName = xstrsave( answer->cname );
if ( NULL == CurrentName ) {
}
}
adns_finish( astate );
}
}
adns_finish( astate );
- RtlFreeHeap( CurrentName, 0, GetProcessHeap() );
+ RtlFreeHeap( RtlGetProcessHeap(), 0, CurrentName );
return ERROR_FILE_NOT_FOUND;
default:
return ERROR_OUTOFMEMORY; /* XXX arty: find a better error code. */
return ERROR_FILE_NOT_FOUND;
default:
return ERROR_OUTOFMEMORY; /* XXX arty: find a better error code. */
PIP4_ARRAY Servers,
PDNS_RECORD *QueryResultSet,
PVOID *Reserved ) {
PIP4_ARRAY Servers,
PDNS_RECORD *QueryResultSet,
PVOID *Reserved ) {
- return DnsQuery_UTF8( Name, Type, Options, Servers, QueryResultSet,
- Reserved );
+ UNIMPLEMENTED;
+ return ERROR_OUTOFMEMORY;
}
void DnsIntFreeRecordList( PDNS_RECORD ToDelete ) {
}
void DnsIntFreeRecordList( PDNS_RECORD ToDelete ) {