[!] bug fixed: issue #7727 ( loadUnicodeString returns empty string )

git-svn-id: https://pykd.svn.codeplex.com/svn@57972 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
SND\kernelnet_cp 2010-11-23 08:14:21 +00:00
parent 56110ea78f
commit c1db435c56

View File

@ -185,9 +185,7 @@ loadUnicodeStr( ULONG64 address )
USHORT length; USHORT length;
USHORT maximumLength; USHORT maximumLength;
ULONG64 buffer = 0; ULONG64 buffer = 0;
wchar_t *str = NULL; wchar_t *str = NULL;
char *ansiStr = NULL;
do { do {
@ -225,21 +223,22 @@ loadUnicodeStr( ULONG64 address )
address += 4; address += 4;
} }
str = new wchar_t[ length/2 ]; wchar_t *str = new wchar_t[ length/2 ];
if ( !loadMemory( buffer, str, length ) ) if ( !loadMemory( buffer, str, length ) )
break; break;
boost::python::object( std::wstring(str) ); std::wstring strValue(str, length/2);
delete[] str;
return boost::python::object( strValue );
} while( FALSE ); } while( FALSE );
if ( str ) if ( str )
delete[] str; delete[] str;
if ( ansiStr )
delete[] ansiStr;
return boost::python::object( "" ); return boost::python::object( "" );
} }
@ -252,8 +251,7 @@ loadAnsiStr( ULONG64 address )
USHORT length; USHORT length;
USHORT maximumLength; USHORT maximumLength;
ULONG64 buffer = 0; ULONG64 buffer = 0;
char *str = NULL;
char *ansiStr = NULL;
do { do {
@ -292,21 +290,21 @@ loadAnsiStr( ULONG64 address )
} }
ansiStr = new char [ length/2 ]; str = new char [ length ];
if ( !loadMemory( buffer, ansiStr, length ) ) if ( !loadMemory( buffer, str, length ) )
break; break;
std::string strVal ( ansiStr, length/2 ); std::string strVal ( str, length );
delete[] ansiStr; delete[] str;
return boost::python::object( strVal ); return boost::python::object( strVal );
} while( FALSE ); } while( FALSE );
if ( ansiStr ) if ( str )
delete[] ansiStr; delete[] str;
return boost::python::object( "" ); return boost::python::object( "" );
} }