diff options
author | Denys Vlasenko <dvlasenk@redhat.com> | 2010-12-16 13:13:59 +0100 |
---|---|---|
committer | Denys Vlasenko <dvlasenk@redhat.com> | 2010-12-16 13:13:59 +0100 |
commit | 75ead03a87172bc3a60ab5628a9c78e01f74ad03 (patch) | |
tree | 6d2dce2ba7c425612004f30fdcdd0cad796e1d92 /src | |
parent | 27276b34e3631f60a2414ab9c199f28de9b03780 (diff) | |
download | abrt-75ead03a87172bc3a60ab5628a9c78e01f74ad03.tar.gz abrt-75ead03a87172bc3a60ab5628a9c78e01f74ad03.tar.xz abrt-75ead03a87172bc3a60ab5628a9c78e01f74ad03.zip |
report-python/dump_dir: fix SEGV when dd.op() operates on closed dd
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/report-python/dump_dir.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/report-python/dump_dir.c b/src/report-python/dump_dir.c index eb72e10b..b207757d 100644 --- a/src/report-python/dump_dir.c +++ b/src/report-python/dump_dir.c @@ -63,6 +63,12 @@ static PyObject *p_dd_close(PyObject *pself, PyObject *args) static PyObject *p_dd_delete(PyObject *pself, PyObject *args) { p_dump_dir *self = (p_dump_dir*)pself; +//Do we want to disallow delete() on non-opened dd? +// if (!self->dd) +// { +// PyErr_SetString(ReportError, "dump dir is not open"); +// return NULL; +// } dd_delete(self->dd); self->dd = NULL; Py_RETURN_NONE; @@ -72,6 +78,11 @@ static PyObject *p_dd_delete(PyObject *pself, PyObject *args) static PyObject *p_dd_exist(PyObject *pself, PyObject *args) { p_dump_dir *self = (p_dump_dir*)pself; + if (!self->dd) + { + PyErr_SetString(ReportError, "dump dir is not open"); + return NULL; + } const char *path; if (!PyArg_ParseTuple(args, "s", &path)) { @@ -90,6 +101,11 @@ static PyObject *p_dd_exist(PyObject *pself, PyObject *args) static PyObject *p_dd_load_text_ext(PyObject *pself, PyObject *args) { p_dump_dir *self = (p_dump_dir*)pself; + if (!self->dd) + { + PyErr_SetString(ReportError, "dump dir is not open"); + return NULL; + } const char *name; int flags = 0; if (!PyArg_ParseTuple(args, "s|i", &name, &flags)) @@ -106,6 +122,11 @@ static PyObject *p_dd_load_text_ext(PyObject *pself, PyObject *args) static PyObject *p_dd_save_text(PyObject *pself, PyObject *args) { p_dump_dir *self = (p_dump_dir*)pself; + if (!self->dd) + { + PyErr_SetString(ReportError, "dump dir is not open"); + return NULL; + } const char *name; const char *data; if (!PyArg_ParseTuple(args, "ss", &name, &data)) @@ -120,6 +141,11 @@ static PyObject *p_dd_save_text(PyObject *pself, PyObject *args) static PyObject *p_dd_save_binary(PyObject *pself, PyObject *args) { p_dump_dir *self = (p_dump_dir*)pself; + if (!self->dd) + { + PyErr_SetString(ReportError, "dump dir is not open"); + return NULL; + } const char *name; const char *data; unsigned size; |