diff options
author | Bram Moolenaar <Bram@vim.org> | 2013-05-30 13:17:17 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2013-05-30 13:17:17 +0200 |
commit | 494ff7e85033e233620ba7fec42156745758f5dc (patch) | |
tree | 5ae0526697116a83a9b7cca2111940ba8efffc93 /src | |
parent | 355fd9b468108251eefc8c0d50390d0f627046ea (diff) | |
download | vim-git-494ff7e85033e233620ba7fec42156745758f5dc.tar.gz |
updated for version 7.3.1064v7.3.1064
Problem: Python: insufficient error checking.
Solution: Python patch 23. (ZyX)
Diffstat (limited to 'src')
-rw-r--r-- | src/if_py_both.h | 31 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 21 insertions, 12 deletions
diff --git a/src/if_py_both.h b/src/if_py_both.h index f19feda27..59bb0f56d 100644 --- a/src/if_py_both.h +++ b/src/if_py_both.h @@ -3304,10 +3304,10 @@ SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, PyInt *len_cha for (i = 0; i < new_len; ++i) { - PyObject *line = PyList_GetItem(list, i); + PyObject *line; - array[i] = StringToLine(line); - if (array[i] == NULL) + if (!(line = PyList_GetItem(list, i)) || + !(array[i] = StringToLine(line))) { while (i) vim_free(array[--i]); @@ -3319,7 +3319,7 @@ SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, PyInt *len_cha VimTryStart(); PyErr_Clear(); - // START of region without "return". Must call restore_buffer()! + /* START of region without "return". Must call restore_buffer()! */ switch_buffer(&savebuf, buf); if (u_save((linenr_T)(lo-1), (linenr_T)hi) == FAIL) @@ -3400,7 +3400,7 @@ SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, PyInt *len_cha if (buf == savebuf) py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)extra); - // END of region without "return". + /* END of region without "return". */ restore_buffer(savebuf); if (VimTryEnd()) @@ -3479,10 +3479,10 @@ InsertBufferLines(buf_T *buf, PyInt n, PyObject *lines, PyInt *len_change) for (i = 0; i < size; ++i) { - PyObject *line = PyList_GetItem(lines, i); - array[i] = StringToLine(line); + PyObject *line; - if (array[i] == NULL) + if (!(line = PyList_GetItem(lines, i)) || + !(array[i] = StringToLine(line))) { while (i) vim_free(array[--i]); @@ -4014,8 +4014,15 @@ BufferMark(BufferObject *self, PyObject *args) if (!PyArg_ParseTuple(args, "s", &pmark)) return NULL; - mark = *pmark; + if (STRLEN(pmark) != 1) + { + PyErr_SetString(PyExc_ValueError, + _("mark name must be a single character")); + return NULL; + } + + mark = *pmark; VimTryStart(); switch_buffer(&savebuf, self->buf); posp = getmark(mark, FALSE); @@ -4258,7 +4265,7 @@ CurrentSetattr(PyObject *self UNUSED, char *name, PyObject *value) if (value->ob_type != &BufferType) { - PyErr_SetString(PyExc_TypeError, _("expected vim.buffer object")); + PyErr_SetString(PyExc_TypeError, _("expected vim.Buffer object")); return -1; } @@ -4283,7 +4290,7 @@ CurrentSetattr(PyObject *self UNUSED, char *name, PyObject *value) if (value->ob_type != &WindowType) { - PyErr_SetString(PyExc_TypeError, _("expected vim.window object")); + PyErr_SetString(PyExc_TypeError, _("expected vim.Window object")); return -1; } @@ -4315,7 +4322,7 @@ CurrentSetattr(PyObject *self UNUSED, char *name, PyObject *value) { if (value->ob_type != &TabPageType) { - PyErr_SetString(PyExc_TypeError, _("expected vim.tabpage object")); + PyErr_SetString(PyExc_TypeError, _("expected vim.TabPage object")); return -1; } diff --git a/src/version.c b/src/version.c index b05dc0e1a..d66214d13 100644 --- a/src/version.c +++ b/src/version.c @@ -729,6 +729,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1064, +/**/ 1063, /**/ 1062, |