Переглянути джерело

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().
Per Heed 5 роки тому
батько
коміт
318779be7a
1 змінених файлів з 6 додано та 1 видалено
  1. 6 1
      deps/obs-scripting/obs-scripting-python.c

+ 6 - 1
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)