diff --git a/aruco_pose/CMakeLists.txt b/aruco_pose/CMakeLists.txt index cdd55fd4..e72ce8fa 100644 --- a/aruco_pose/CMakeLists.txt +++ b/aruco_pose/CMakeLists.txt @@ -25,7 +25,7 @@ find_package(catkin REQUIRED COMPONENTS ) find_package(OpenCV 3 REQUIRED COMPONENTS core imgproc calib3d) -if ("${OpenCV_VERSION_MINOR}" LESS "3") +if ("${OpenCV_VERSION_MINOR}" LESS "9") message(STATUS "OpenCV version too low, using vendored ArUco package") include(vendor/VendorOpenCV.cmake) else() @@ -229,4 +229,5 @@ if (CATKIN_ENABLE_TESTING) add_rostest(test/test_parser_empty_map.test) add_rostest(test/test_node_failure.test) add_rostest(test/largemap.test) + add_rostest(test/crash_opencv.test) endif() diff --git a/aruco_pose/test/crash_image_01.png b/aruco_pose/test/crash_image_01.png new file mode 100644 index 00000000..dc509792 Binary files /dev/null and b/aruco_pose/test/crash_image_01.png differ diff --git a/aruco_pose/test/crash_image_02.png b/aruco_pose/test/crash_image_02.png new file mode 100644 index 00000000..ac375329 Binary files /dev/null and b/aruco_pose/test/crash_image_02.png differ diff --git a/aruco_pose/test/crash_image_03.png b/aruco_pose/test/crash_image_03.png new file mode 100644 index 00000000..c570402c Binary files /dev/null and b/aruco_pose/test/crash_image_03.png differ diff --git a/aruco_pose/test/crash_opencv.py b/aruco_pose/test/crash_opencv.py new file mode 100644 index 00000000..69c713ab --- /dev/null +++ b/aruco_pose/test/crash_opencv.py @@ -0,0 +1,18 @@ +import rospy +import pytest + +from visualization_msgs.msg import MarkerArray as VisMarkerArray + + +@pytest.fixture +def node(): + return rospy.init_node('aruco_pose_opencv_crash', anonymous=True) + +def test_opencv_crashes_img01(node): + rospy.wait_for_message('aruco_detect_01/visualization', VisMarkerArray, timeout=5) + +def test_opencv_crashes_img02(node): + rospy.wait_for_message('aruco_detect_02/visualization', VisMarkerArray, timeout=5) + +def test_opencv_crashes_img03(node): + rospy.wait_for_message('aruco_detect_03/visualization', VisMarkerArray, timeout=5) diff --git a/aruco_pose/test/crash_opencv.test b/aruco_pose/test/crash_opencv.test new file mode 100644 index 00000000..9d00aa91 --- /dev/null +++ b/aruco_pose/test/crash_opencv.test @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/aruco_pose/vendor/aruco/src/aruco.cpp b/aruco_pose/vendor/aruco/src/aruco.cpp index dfbff73e..2ce00eba 100644 --- a/aruco_pose/vendor/aruco/src/aruco.cpp +++ b/aruco_pose/vendor/aruco/src/aruco.cpp @@ -924,6 +924,8 @@ static void _refineCandidateLines(std::vector& nContours, std::vector