mirror of
https://github.com/NLnetLabs/unbound.git
synced 2025-12-24 16:49:35 -05:00
pythonmod: fix HANDLE_LEAK on pythonmod_init
Found by the static analyzer Svace (ISP RAS). Handle 'script_py' is created at pythonmod.c:436 by calling function 'fopen' and lost at pythonmod.c:457,465. Signed-off-by: Petr Vaganov <petrvaganoff@gmail.com>
This commit is contained in:
parent
e471e15774
commit
7c28f1b99c
1 changed files with 2 additions and 0 deletions
|
|
@ -454,6 +454,7 @@ int pythonmod_init(struct module_env* env, int id)
|
||||||
if(PyDict_SetItemString(pe->data, "script", fname) < 0) {
|
if(PyDict_SetItemString(pe->data, "script", fname) < 0) {
|
||||||
log_err("pythonmod: could not add item to dictionary");
|
log_err("pythonmod: could not add item to dictionary");
|
||||||
Py_XDECREF(fname);
|
Py_XDECREF(fname);
|
||||||
|
fclose(script_py);
|
||||||
goto python_init_fail;
|
goto python_init_fail;
|
||||||
}
|
}
|
||||||
Py_XDECREF(fname);
|
Py_XDECREF(fname);
|
||||||
|
|
@ -462,6 +463,7 @@ int pythonmod_init(struct module_env* env, int id)
|
||||||
log_err("pythonmod: could not add mod_env object");
|
log_err("pythonmod: could not add mod_env object");
|
||||||
Py_XDECREF(pe->data); /* 2 times, here and on python_init_fail; */
|
Py_XDECREF(pe->data); /* 2 times, here and on python_init_fail; */
|
||||||
/* on failure the reference is not stolen */
|
/* on failure the reference is not stolen */
|
||||||
|
fclose(script_py);
|
||||||
goto python_init_fail;
|
goto python_init_fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue