summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2013-05-30 13:17:17 +0200
committerBram Moolenaar <Bram@vim.org>2013-05-30 13:17:17 +0200
commit494ff7e85033e233620ba7fec42156745758f5dc (patch)
tree5ae0526697116a83a9b7cca2111940ba8efffc93
parent355fd9b468108251eefc8c0d50390d0f627046ea (diff)
updated for version 7.3.1064v7.3.1064
Problem: Python: insufficient error checking. Solution: Python patch 23. (ZyX)
-rw-r--r--src/if_py_both.h31
-rw-r--r--src/version.c2
2 files changed, 21 insertions, 12 deletions
diff --git a/src/if_py_both.h b/src/if_py_both.h
index f19feda277..59bb0f56d3 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 b05dc0e1a8..d66214d138 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,