From: Jonathan Wakely Date: Thu, 24 Oct 2019 12:54:05 +0000 (+0100) Subject: Fix array index error in address_v6 comparisons X-Git-Tag: releases/gcc-9.3.0~495 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=38cb5876a2875703453d06d3eca5d976cd1414c0;p=thirdparty%2Fgcc.git Fix array index error in address_v6 comparisons Backport from mainline 2019-09-26 Jonathan Wakely * include/experimental/internet (operator==, operator<): Fix loop condition to avoid reading past the end of the array. From-SVN: r277378 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 518427d19f72..92f91d63d93f 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,11 @@ 2019-10-24 Jonathan Wakely + Backport from mainline + 2019-09-26 Jonathan Wakely + + * include/experimental/internet (operator==, operator<): Fix loop + condition to avoid reading past the end of the array. + Backport from mainline 2019-08-06 Jonathan Wakely diff --git a/libstdc++-v3/include/experimental/internet b/libstdc++-v3/include/experimental/internet index 467bdfda3ed1..e1368ec745a7 100644 --- a/libstdc++-v3/include/experimental/internet +++ b/libstdc++-v3/include/experimental/internet @@ -539,7 +539,7 @@ namespace ip const auto& __aa = __a._M_bytes; const auto& __bb = __b._M_bytes; int __i = 0; - for (; __aa[__i] == __bb[__i] && __i < 16; ++__i) + for (; __i < 16 && __aa[__i] == __bb[__i]; ++__i) ; return __i == 16 ? __a.scope_id() == __b.scope_id() : false; } @@ -554,7 +554,7 @@ namespace ip const auto& __aa = __a._M_bytes; const auto& __bb = __b._M_bytes; int __i = 0; - for (; __aa[__i] == __bb[__i] && __i < 16; ++__i) + for (; __i < 16 && __aa[__i] == __bb[__i]; ++__i) ; return __i == 16 ? __a.scope_id() < __b.scope_id() : __aa[__i] < __bb[__i]; }