From d34d0ea6eae63f3f1913deff97e1779c5e130f32 Mon Sep 17 00:00:00 2001 From: Joseph Lenox Date: Sun, 13 May 2018 00:06:34 -0500 Subject: [PATCH] Throw a custom exception if Print::delete_object() gets an out-of-range identifier. --- xs/src/libslic3r/Print.cpp | 2 ++ xs/src/libslic3r/Print.hpp | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/xs/src/libslic3r/Print.cpp b/xs/src/libslic3r/Print.cpp index 73c5a25ce..e6dae3435 100644 --- a/xs/src/libslic3r/Print.cpp +++ b/xs/src/libslic3r/Print.cpp @@ -77,6 +77,8 @@ void Print::delete_object(size_t idx) { PrintObjectPtrs::iterator i = this->objects.begin() + idx; + if (i >= this->objects.end()) + throw InvalidObjectException(); // before deleting object, invalidate all of its steps in order to // invalidate all of the dependent ones in Print diff --git a/xs/src/libslic3r/Print.hpp b/xs/src/libslic3r/Print.hpp index 7f83c684f..f0c9dfd5c 100644 --- a/xs/src/libslic3r/Print.hpp +++ b/xs/src/libslic3r/Print.hpp @@ -16,8 +16,12 @@ #include "SlicingAdaptive.hpp" #include "LayerHeightSpline.hpp" +#include + namespace Slic3r { +class InvalidObjectException : public std::exception {}; + class Print; class PrintObject; class ModelObject;