blob: 0140633db3b7fb7f2ffbafc699817f48bb97ebdb [file] [log] [blame]
Upstream-Status: Backport [https://github.com/opencv/opencv/pull/9376/commits/0d854db361106dfcb055231fd0112c5b85ef2287]
Fix CVEs for opencv 3.3.
* CVE-2017-12597
* CVE-2017-12598
* CVE-2017-12599
* CVE-2017-12600
* CVE-2017-12601
* CVE-2017-12602
* CVE-2017-12603
* CVE-2017-12604
* CVE-2017-12605
* CVE-2017-12606
* CVE-2017-12862
* CVE-2017-12863
* CVE-2017-12864
Signed-off-by: Kai Kang <kai.kang@windriver.com>
---
From 0d854db361106dfcb055231fd0112c5b85ef2287 Mon Sep 17 00:00:00 2001
From: Alexander Alekhin <alexander.a.alekhin@gmail.com>
Date: Tue, 15 Aug 2017 21:45:05 +0000
Subject: [PATCH 1/3] build: workaround GCC 7.1.1 compilation issue with
sanitize flags
Version: gcc (GCC) 7.1.1 20170622 (Red Hat 7.1.1-3)
Flags: -fsanitize=address,undefined
---
modules/ts/src/cuda_test.cpp | 56 ++++++++++++++++++++++++++------------------
1 file changed, 33 insertions(+), 23 deletions(-)
diff --git a/modules/ts/src/cuda_test.cpp b/modules/ts/src/cuda_test.cpp
index a48e0a087..eb4cee136 100644
--- a/modules/ts/src/cuda_test.cpp
+++ b/modules/ts/src/cuda_test.cpp
@@ -322,16 +322,20 @@ namespace cvtest
if (m1.size() != m2.size())
{
- return AssertionFailure() << "Matrices \"" << expr1 << "\" and \"" << expr2 << "\" have different sizes : \""
- << expr1 << "\" [" << PrintToString(m1.size()) << "] vs \""
- << expr2 << "\" [" << PrintToString(m2.size()) << "]";
+ std::stringstream msg;
+ msg << "Matrices \"" << expr1 << "\" and \"" << expr2 << "\" have different sizes : \""
+ << expr1 << "\" [" << PrintToString(m1.size()) << "] vs \""
+ << expr2 << "\" [" << PrintToString(m2.size()) << "]";
+ return AssertionFailure() << msg.str();
}
if (m1.type() != m2.type())
{
- return AssertionFailure() << "Matrices \"" << expr1 << "\" and \"" << expr2 << "\" have different types : \""
- << expr1 << "\" [" << PrintToString(MatType(m1.type())) << "] vs \""
- << expr2 << "\" [" << PrintToString(MatType(m2.type())) << "]";
+ std::stringstream msg;
+ msg << "Matrices \"" << expr1 << "\" and \"" << expr2 << "\" have different types : \""
+ << expr1 << "\" [" << PrintToString(MatType(m1.type())) << "] vs \""
+ << expr2 << "\" [" << PrintToString(MatType(m2.type())) << "]";
+ return AssertionFailure() << msg.str();
}
Mat diff;
@@ -343,12 +347,14 @@ namespace cvtest
if (maxVal > eps)
{
- return AssertionFailure() << "The max difference between matrices \"" << expr1 << "\" and \"" << expr2
- << "\" is " << maxVal << " at (" << maxLoc.y << ", " << maxLoc.x / m1.channels() << ")"
- << ", which exceeds \"" << eps_expr << "\", where \""
- << expr1 << "\" at (" << maxLoc.y << ", " << maxLoc.x / m1.channels() << ") evaluates to " << printMatVal(m1, maxLoc) << ", \""
- << expr2 << "\" at (" << maxLoc.y << ", " << maxLoc.x / m1.channels() << ") evaluates to " << printMatVal(m2, maxLoc) << ", \""
- << eps_expr << "\" evaluates to " << eps;
+ std::stringstream msg;
+ msg << "The max difference between matrices \"" << expr1 << "\" and \"" << expr2
+ << "\" is " << maxVal << " at (" << maxLoc.y << ", " << maxLoc.x / m1.channels() << ")"
+ << ", which exceeds \"" << eps_expr << "\", where \""
+ << expr1 << "\" at (" << maxLoc.y << ", " << maxLoc.x / m1.channels() << ") evaluates to " << printMatVal(m1, maxLoc) << ", \""
+ << expr2 << "\" at (" << maxLoc.y << ", " << maxLoc.x / m1.channels() << ") evaluates to " << printMatVal(m2, maxLoc) << ", \""
+ << eps_expr << "\" evaluates to " << eps;
+ return AssertionFailure() << msg.str();
}
return AssertionSuccess();
@@ -469,9 +475,11 @@ namespace cvtest
{
if (gold.size() != actual.size())
{
- return testing::AssertionFailure() << "KeyPoints size mistmach\n"
- << "\"" << gold_expr << "\" : " << gold.size() << "\n"
- << "\"" << actual_expr << "\" : " << actual.size();
+ std::stringstream msg;
+ msg << "KeyPoints size mistmach\n"
+ << "\"" << gold_expr << "\" : " << gold.size() << "\n"
+ << "\"" << actual_expr << "\" : " << actual.size();
+ return AssertionFailure() << msg.str();
}
std::sort(actual.begin(), actual.end(), KeyPointLess());
@@ -484,14 +492,16 @@ namespace cvtest
if (!keyPointsEquals(p1, p2))
{
- return testing::AssertionFailure() << "KeyPoints differ at " << i << "\n"
- << "\"" << gold_expr << "\" vs \"" << actual_expr << "\" : \n"
- << "pt : " << testing::PrintToString(p1.pt) << " vs " << testing::PrintToString(p2.pt) << "\n"
- << "size : " << p1.size << " vs " << p2.size << "\n"
- << "angle : " << p1.angle << " vs " << p2.angle << "\n"
- << "response : " << p1.response << " vs " << p2.response << "\n"
- << "octave : " << p1.octave << " vs " << p2.octave << "\n"
- << "class_id : " << p1.class_id << " vs " << p2.class_id;
+ std::stringstream msg;
+ msg << "KeyPoints differ at " << i << "\n"
+ << "\"" << gold_expr << "\" vs \"" << actual_expr << "\" : \n"
+ << "pt : " << testing::PrintToString(p1.pt) << " vs " << testing::PrintToString(p2.pt) << "\n"
+ << "size : " << p1.size << " vs " << p2.size << "\n"
+ << "angle : " << p1.angle << " vs " << p2.angle << "\n"
+ << "response : " << p1.response << " vs " << p2.response << "\n"
+ << "octave : " << p1.octave << " vs " << p2.octave << "\n"
+ << "class_id : " << p1.class_id << " vs " << p2.class_id;
+ return AssertionFailure() << msg.str();
}
}
--
2.14.1