From 318779be7ad8ad2dfa35a0917348e54214adb5c2 Mon Sep 17 00:00:00 2001 From: Per Heed Date: Sun, 13 Sep 2020 22:32:55 +0200 Subject: [PATCH] obs-scripting: Fix script_path() python mem corruption Returning PyObject with borrowed reference will result in double free and/or use after free issue. Issue seen as crash when running Python script calling script_path(). --- deps/obs-scripting/obs-scripting-python.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/deps/obs-scripting/obs-scripting-python.c b/deps/obs-scripting/obs-scripting-python.c index 72ee9c1f1..cd5c694bf 100644 --- a/deps/obs-scripting/obs-scripting-python.c +++ b/deps/obs-scripting/obs-scripting-python.c @@ -147,8 +147,13 @@ void add_functions_to_py_module(PyObject *module, PyMethodDef *method_list) static PyObject *py_get_current_script_path(PyObject *self, PyObject *args) { + PyObject *dir; + UNUSED_PARAMETER(args); - return PyDict_GetItemString(PyModule_GetDict(self), "__script_dir__"); + + dir = PyDict_GetItemString(PyModule_GetDict(self), "__script_dir__"); + Py_XINCREF(dir); + return dir; } static void get_defaults(struct obs_python_script *data, PyObject *get_defs)