Commit cc64d3fc authored by Tristan Matthews's avatar Tristan Matthews

hds: fix memory leak and buffer probing

Only 200 bytes are peeked but FromCharset was being called with 512.
The char * returned by FromCharset was not being freed, and
strstr was being called on a buffer that was not NULL terminated
(in the non utf-8 case).
parent cd6820b8
......@@ -186,23 +186,24 @@ static bool isHDS( stream_t *s )
if( i_size < 200 )
return false;
const char *str;
char *str;
if( !memcmp( peek, "\xFF\xFE", 2 ) )
{
str = FromCharset( "UTF-16LE", peek, 512 );
str = FromCharset( "UTF-16LE", peek, i_size );
}
else if( !memcmp( peek, "\xFE\xFF", 2 ) )
{
str = FromCharset( "UTF-16BE", peek, 512 );
str = FromCharset( "UTF-16BE", peek, i_size );
}
else
str = peek;
str = strndup( peek, i_size );
if( str == NULL )
return false;
bool ret = strstr( str, "<manifest" ) != NULL;
free( str );
return ret;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment