mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-04 23:57:52 +08:00
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
@ -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…
Reference in New Issue
Block a user