libstdc++: Add test for illegal pointer arithmetic in format [PR111102]
libstdc++-v3/ChangeLog: PR libstdc++/111102 * testsuite/std/format/string.cc: Check wide character format strings with out-of-range widths.
This commit is contained in:
parent
dd4bdb9eea
commit
7564fe9865
1 changed files with 15 additions and 0 deletions
|
@ -16,6 +16,18 @@ is_format_string_for(const char* str, Args&&... args)
|
|||
}
|
||||
}
|
||||
|
||||
template<typename... Args>
|
||||
bool
|
||||
is_format_string_for(const wchar_t* str, Args&&... args)
|
||||
{
|
||||
try {
|
||||
(void) std::vformat(str, std::make_wformat_args(args...));
|
||||
return true;
|
||||
} catch (const std::format_error&) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
test_no_args()
|
||||
{
|
||||
|
@ -124,8 +136,11 @@ test_format_spec()
|
|||
|
||||
// Maximum integer value supported for widths and precisions is USHRT_MAX.
|
||||
VERIFY( is_format_string_for("{:65535}", 1) );
|
||||
VERIFY( is_format_string_for(L"{:65535}", 1) );
|
||||
VERIFY( ! is_format_string_for("{:65536}", 1) );
|
||||
VERIFY( ! is_format_string_for(L"{:65536}", 1) );
|
||||
VERIFY( ! is_format_string_for("{:9999999}", 1) );
|
||||
VERIFY( ! is_format_string_for(L"{:9999999}", 1) );
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Add table
Reference in a new issue