Message ID | 20200922190421.GA684119@redhat.com |
---|---|
State | New |
Headers | show |
Series | [committed] libstdc++: Fix out-of-bounds string_view access in filesystem::path [PR 97167] | expand |
diff --git a/libstdc++-v3/src/c++17/fs_path.cc b/libstdc++-v3/src/c++17/fs_path.cc index cea7aa08601..6e907b1c54d 100644 --- a/libstdc++-v3/src/c++17/fs_path.cc +++ b/libstdc++-v3/src/c++17/fs_path.cc @@ -81,7 +81,7 @@ struct path::_Parser const size_t len = input.size(); // look for root name or root directory - if (is_dir_sep(input[0])) + if (len && is_dir_sep(input[0])) { #if SLASHSLASH_IS_ROOTNAME // look for root name, such as "//foo" diff --git a/libstdc++-v3/testsuite/27_io/filesystem/path/append/source.cc b/libstdc++-v3/testsuite/27_io/filesystem/path/append/source.cc index 2fceee9b774..dc7331945fe 100644 --- a/libstdc++-v3/testsuite/27_io/filesystem/path/append/source.cc +++ b/libstdc++-v3/testsuite/27_io/filesystem/path/append/source.cc @@ -161,6 +161,15 @@ test06() test(p2, s.c_str()); } +void +test07() +{ + path p, p0; + std::string_view s; + p /= s; // PR libstdc++/97167 + compare_paths(p, p0); +} + int main() { @@ -170,4 +179,5 @@ main() test04(); test05(); test06(); + test07(); }