From fd741e43383b96dacd0763c4d628fd308ef59e52 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 9 Dec 2019 12:23:58 +0100 Subject: [PATCH] check returned value of PyUnicode_AsUTF8() before passing to a std::string to avoid possible segfaults --- src/App/Expression.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/App/Expression.cpp b/src/App/Expression.cpp index 4508cc2f15..fb84912c1e 100644 --- a/src/App/Expression.cpp +++ b/src/App/Expression.cpp @@ -503,8 +503,13 @@ App::any pyObjectToAny(Py::Object value, bool check) { return App::any(std::string(PyString_AsString(s))); } #else - else if (PyUnicode_Check(pyvalue)) - return App::any(std::string(PyUnicode_AsUTF8(pyvalue))); + else if (PyUnicode_Check(pyvalue)) { + const char* value = PyUnicode_AsUTF8(pyvalue); + if (!value) { + FC_THROWM(Base::ValueError, "Invalid unicode string"); + } + return App::any(std::string(value)); + } #endif else { return App::any(pyObjectWrap(pyvalue));