Fix memory leak and access violation in UpnpSendAction(Ex)Async.

Free buffers after malloc or ixmlPrintNode failure.
Free Param->Header before destructing Param.
This commit is contained in:
Yoichi NAKAYAMA 2012-06-19 19:13:46 +09:00
parent 6db2271ac3
commit d9e90499b7
2 changed files with 12 additions and 1 deletions

View File

@ -2,6 +2,13 @@
Version 1.6.18
*******************************************************************************
2012-06-19 Yoichi NAKAYAMA <yoichi.nakayama(at)gmail.com>
Fix memory leak and access violation in UpnpSendAction(Ex)Async.
Free buffers after malloc or ixmlPrintNode failure.
Free Param->Header before destructing Param.
2012-05-25 Anoop Mohan <anoop.anoop(at)gmail.com>
This patch fixes a bug in non blocking connect call where the sock

View File

@ -2736,6 +2736,7 @@ int UpnpSendActionAsync(
malloc( sizeof( struct UpnpNonblockParam ) );
if( Param == NULL ) {
ixmlFreeDOMString( tmpStr );
return UPNP_E_OUTOF_MEMORY;
}
memset( Param, 0, sizeof( struct UpnpNonblockParam ) );
@ -2829,6 +2830,7 @@ int UpnpSendActionExAsync(
tmpStr = ixmlPrintNode( ( IXML_Node * ) Act );
if( tmpStr == NULL ) {
ixmlFreeDOMString( headerStr );
return UPNP_E_INVALID_ACTION;
}
@ -2836,6 +2838,8 @@ int UpnpSendActionExAsync(
( struct UpnpNonblockParam * )
malloc( sizeof( struct UpnpNonblockParam ) );
if( Param == NULL ) {
ixmlFreeDOMString( tmpStr );
ixmlFreeDOMString( headerStr );
return UPNP_E_OUTOF_MEMORY;
}
memset( Param, 0, sizeof( struct UpnpNonblockParam ) );
@ -2859,10 +2863,10 @@ int UpnpSendActionExAsync(
retVal = ixmlParseBufferEx( tmpStr, &( Param->Act ) );
if( retVal != IXML_SUCCESS ) {
ixmlDocument_free( Param->Header );
free( Param );
ixmlFreeDOMString( tmpStr );
ixmlFreeDOMString( headerStr );
ixmlDocument_free( Param->Header );
if( retVal == IXML_INSUFFICIENT_MEMORY ) {
return UPNP_E_OUTOF_MEMORY;
} else {