cpychecker-fixes.patch
text/x-diff
Filename: cpychecker-fixes.patch
Type: text/x-diff
Part: 1
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: unified
| File | + | − |
|---|---|---|
| src/pl/plpython/plpy_elog.c | 0 | 0 |
| src/pl/plpython/plpy_main.c | 0 | 0 |
| src/pl/plpython/plpy_plpymodule.c | 0 | 0 |
| src/pl/plpython/plpy_spi.c | 0 | 0 |
| src/pl/plpython/plpy_typeio.c | 0 | 0 |
diff --git a/src/pl/plpython/plpy_elog.c b/src/pl/plpython/plpy_elog.c
index 741980c..332898d 100644
*** a/src/pl/plpython/plpy_elog.c
--- b/src/pl/plpython/plpy_elog.c
*************** get_source_line(const char *src, int lin
*** 365,370 ****
--- 365,374 ----
const char *next = src;
int current = 0;
+ /* sanity check */
+ if (lineno <= 0)
+ return NULL;
+
while (current < lineno)
{
s = next;
diff --git a/src/pl/plpython/plpy_main.c b/src/pl/plpython/plpy_main.c
index ae9d87e..f259ecf 100644
*** a/src/pl/plpython/plpy_main.c
--- b/src/pl/plpython/plpy_main.c
*************** PLy_init_interp(void)
*** 133,138 ****
--- 133,140 ----
Py_INCREF(mainmod);
PLy_interp_globals = PyModule_GetDict(mainmod);
PLy_interp_safe_globals = PyDict_New();
+ if (PLy_interp_safe_globals == NULL)
+ PLy_elog(ERROR, "could not create globals");
PyDict_SetItemString(PLy_interp_globals, "GD", PLy_interp_safe_globals);
Py_DECREF(mainmod);
if (PLy_interp_globals == NULL || PyErr_Occurred())
diff --git a/src/pl/plpython/plpy_plpymodule.c b/src/pl/plpython/plpy_plpymodule.c
index d2d0a2a..7f86434 100644
*** a/src/pl/plpython/plpy_plpymodule.c
--- b/src/pl/plpython/plpy_plpymodule.c
*************** PLy_init_plpy(void)
*** 173,178 ****
--- 173,180 ----
main_mod = PyImport_AddModule("__main__");
main_dict = PyModule_GetDict(main_mod);
plpy_mod = PyImport_AddModule("plpy");
+ if (plpy_mod == NULL)
+ elog(ERROR, "could not initialize plpy");
PyDict_SetItemString(main_dict, "plpy", plpy_mod);
if (PyErr_Occurred())
elog(ERROR, "could not initialize plpy");
*************** PLy_add_exceptions(PyObject *plpy)
*** 208,213 ****
--- 210,220 ----
PLy_exc_fatal = PyErr_NewException("plpy.Fatal", NULL, NULL);
PLy_exc_spi_error = PyErr_NewException("plpy.SPIError", NULL, NULL);
+ if (PLy_exc_error == NULL ||
+ PLy_exc_fatal == NULL ||
+ PLy_exc_spi_error == NULL)
+ elog(ERROR, "could not create the base SPI exceptions");
+
Py_INCREF(PLy_exc_error);
PyModule_AddObject(plpy, "Error", PLy_exc_error);
Py_INCREF(PLy_exc_fatal);
*************** PLy_generate_spi_exceptions(PyObject *mo
*** 241,247 ****
--- 248,260 ----
PyObject *sqlstate;
PyObject *dict = PyDict_New();
+ if (dict == NULL)
+ elog(ERROR, "could not generate SPI exceptions");
+
sqlstate = PyString_FromString(unpack_sql_state(exception_map[i].sqlstate));
+ if (sqlstate == NULL)
+ elog(ERROR, "could not generate SPI exceptions");
+
PyDict_SetItemString(dict, "sqlstate", sqlstate);
Py_DECREF(sqlstate);
exc = PyErr_NewException(exception_map[i].name, base, dict);
*************** PLy_output(volatile int level, PyObject
*** 369,376 ****
* decoration.
*/
PyObject *o;
- PyArg_UnpackTuple(args, "plpy.elog", 1, 1, &o);
so = PyObject_Str(o);
}
else
--- 382,393 ----
* decoration.
*/
PyObject *o;
+ int result;
+
+ result = PyArg_UnpackTuple(args, "plpy.elog", 1, 1, &o);
+ if (!result)
+ elog(ERROR, "could not unpack arguments in plpy.elog");
so = PyObject_Str(o);
}
else
diff --git a/src/pl/plpython/plpy_spi.c b/src/pl/plpython/plpy_spi.c
index 0d63c4f..20b93cd 100644
*** a/src/pl/plpython/plpy_spi.c
--- b/src/pl/plpython/plpy_spi.c
*************** PLy_spi_execute_query(char *query, long
*** 338,344 ****
int rv;
volatile MemoryContext oldcontext;
volatile ResourceOwner oldowner;
! PyObject *ret;
oldcontext = CurrentMemoryContext;
oldowner = CurrentResourceOwner;
--- 338,344 ----
int rv;
volatile MemoryContext oldcontext;
volatile ResourceOwner oldowner;
! PyObject *ret = NULL;
oldcontext = CurrentMemoryContext;
oldowner = CurrentResourceOwner;
*************** PLy_spi_execute_query(char *query, long
*** 362,367 ****
--- 362,368 ----
if (rv < 0)
{
+ Py_XDECREF(ret);
PLy_exception_set(PLy_exc_spi_error,
"SPI_execute failed: %s",
SPI_result_code_string(rv));
diff --git a/src/pl/plpython/plpy_typeio.c b/src/pl/plpython/plpy_typeio.c
index d5cac9f..9838789 100644
*** a/src/pl/plpython/plpy_typeio.c
--- b/src/pl/plpython/plpy_typeio.c
*************** PLyList_FromArray(PLyDatumToOb *arg, Dat
*** 558,563 ****
--- 558,565 ----
length = ARR_DIMS(array)[0];
lbound = ARR_LBOUND(array)[0];
list = PyList_New(length);
+ if (list == NULL)
+ elog(ERROR, "could not transform Python list to array");
for (i = 0; i < length; i++)
{