Description: Move tests that trigger -Warray-bounds to separate compilation unit GCC 10 is now smart enough to detect violation of array boundaries that tests are actually tested. Along with -Werror this led to tests failure, so I move such tests to another compilation unit to have the warning deactivated for only these tests. Bug-Debian: https://bugs.debian.org/966895 Author: Nicholas Guriev Last-Modified: Wed, 19 Aug 2020 08:55:52 +0300 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -179,6 +179,7 @@ add_gsl_test(owner_tests) add_gsl_test(byte_tests) add_gsl_test(algorithm_tests) add_gsl_test(strict_notnull_tests) +add_gsl_test(array_bounds) # No exception tests --- /dev/null +++ b/tests/array_bounds.cpp @@ -0,0 +1,68 @@ +/////////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2015 Microsoft Corporation. All rights reserved. +// +// This code is licensed under the MIT License (MIT). +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// +/////////////////////////////////////////////////////////////////////////////// + +#ifdef __GNUC__ +#pragma GCC diagnostic warning "-Warray-bounds" +#endif // __GNUC__ + +#include + +#include // for gsl::multi_span + +namespace gsl +{ +struct fail_fast; +} // namespace gsl + +namespace +{ +static constexpr char deathstring[] = "Expected Death"; +} // namespace + +TEST(array_bounds, subspan_from_multi_span_test) +{ + int arr[5] = {1, 2, 3, 4, 5}; + gsl::multi_span av = arr; + + std::set_terminate([] { + std::cerr << "Expected Death. subspan"; + std::abort(); + }); + + EXPECT_DEATH(av.subspan(6).length(), deathstring); +} + +TEST(array_bounds, strided_span_bounds_from_strided_span_tests) +{ + int arr[] = {0, 1, 2, 3}; + gsl::multi_span av(arr); + + std::set_terminate([] { + std::cerr << "Expected Death. strided_span_bounds"; + std::abort(); + }); + + // incorrect sections + EXPECT_DEATH(av.section(0, 0)[0], deathstring); + EXPECT_DEATH(av.section(1, 0)[0], deathstring); + EXPECT_DEATH(av.section(1, 1)[1], deathstring); + + EXPECT_DEATH(av.section(2, 5), deathstring); + EXPECT_DEATH(av.section(5, 2), deathstring); + EXPECT_DEATH(av.section(5, 0), deathstring); + EXPECT_DEATH(av.section(0, 5), deathstring); + EXPECT_DEATH(av.section(5, 5), deathstring); +} --- a/tests/multi_span_tests.cpp +++ b/tests/multi_span_tests.cpp @@ -1042,10 +1042,6 @@ TEST(multi_span_test, subspan) EXPECT_TRUE(av.subspan(1).length() == 4); EXPECT_TRUE(av.subspan(4).length() == 1); EXPECT_TRUE(av.subspan(5).length() == 0); - // Disabled test instead of fixing since multi_span is deprecated. (PR#835) -#if !(defined(__GNUC__) && __GNUC__ == 8) - EXPECT_DEATH(av.subspan(6).length(), deathstring); -#endif auto av2 = av.subspan(1); for (int i = 0; i < 4; ++i) EXPECT_TRUE(av2[i] == i + 2); } --- a/tests/strided_span_tests.cpp +++ b/tests/strided_span_tests.cpp @@ -403,20 +403,6 @@ TEST(strided_span_tests, strided_span_bo }); { - // incorrect sections - - EXPECT_DEATH(av.section(0, 0)[0], deathstring); - EXPECT_DEATH(av.section(1, 0)[0], deathstring); - EXPECT_DEATH(av.section(1, 1)[1], deathstring); - - EXPECT_DEATH(av.section(2, 5), deathstring); - EXPECT_DEATH(av.section(5, 2), deathstring); - EXPECT_DEATH(av.section(5, 0), deathstring); - EXPECT_DEATH(av.section(0, 5), deathstring); - EXPECT_DEATH(av.section(5, 5), deathstring); - } - - { // zero stride strided_span sav{av, {{4}, {}}}; EXPECT_TRUE(sav[0] == 0); n class='msg-avail'>...* gnu/packages/avahi.scm (avahi)[home-page]: Use HTTPS. * gnu/services/avahi.scm (avahi-service): Likewise in docstring. Tobias Geerinckx-Rice 2019-12-05gnu: avahi: Incorporate grafted changes....* gnu/packages/avahi.scm (avahi)[replacement]: Remove. [source](patches): Add avahi-CVE-2018-1000845.patch. [properties]: New field. (avahi/fixed): Remove variable. Marius Bakke 2019-10-23gnu: avahi: Don't use package/inherit....Thanks to Mark H Weaver <mhw@netris.org>. * gnu/packages/avahi.scm (avahi): Use (package (inherit …)) instead of package/inherit. Tobias Geerinckx-Rice 2019-10-23gnu: avahi: Fix CVE-2018-1000845 and duplicate CVE-2017-6519....* gnu/packages/avahi.scm (avahi/fixed): New variable. (avahi)[replacement]: Use it. * gnu/packages/patches/avahi-CVE-2018-1000845.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. Tobias Geerinckx-Rice