prevent OOB read in string_equal_suffix, string_equal_suffix_nocase

This commit is contained in:
Garux
2019-11-11 01:15:28 +03:00
parent d92c32d453
commit 49c602d793

View File

@@ -147,14 +147,16 @@ inline bool string_equal_prefix_nocase( const char* string, const char* prefix )
/// \brief Returns true if the ending of \p string is equal to \p suffix.
/// O(n)
inline bool string_equal_suffix( const char* string, const char* suffix){
const char *s = string + string_length( string ) - string_length( suffix );
return string_equal_n( s , suffix, string_length( suffix ) );
inline bool string_equal_suffix( const char* string, const char* suffix ){
const std::size_t stringLength = string_length( string );
const std::size_t suffixLength = string_length( suffix );
return ( suffixLength > stringLength )? false : string_equal_n( string + stringLength - suffixLength, suffix, suffixLength );
}
inline bool string_equal_suffix_nocase( const char* string, const char* suffix){
const char *s = string + string_length( string ) - string_length( suffix );
return string_equal_nocase_n( s , suffix, string_length( suffix ) );
inline bool string_equal_suffix_nocase( const char* string, const char* suffix ){
const std::size_t stringLength = string_length( string );
const std::size_t suffixLength = string_length( suffix );
return ( suffixLength > stringLength )? false : string_equal_nocase_n( string + stringLength - suffixLength, suffix, suffixLength );
}
/// \brief Copies \p other into \p string and returns \p string.