[packages/vte0] - add various bugfixes from fedora - rel 17
baggins
baggins at pld-linux.org
Sun Sep 11 14:30:59 CEST 2016
commit 0d17364762b6d39261f3c1950d1a6c3b5270d6f3
Author: Jan Rękorajski <baggins at pld-linux.org>
Date: Sun Sep 11 14:30:29 2016 +0200
- add various bugfixes from fedora
- rel 17
vte-0.28.2-control.patch | 68 +++++++++++++++++++++++++++++++
vte-0.28.2-limit-arguments.patch | 40 +++++++++++++++++++
vte-0.28.2-paste-fix.diff | 71 +++++++++++++++++++++++++++++++++
vte-python-bugfixes.patch | 86 ++++++++++++++++++++++++++++++++++++++++
vte0.spec | 10 ++++-
5 files changed, 274 insertions(+), 1 deletion(-)
---
diff --git a/vte0.spec b/vte0.spec
index f70ac00..acd7a95 100644
--- a/vte0.spec
+++ b/vte0.spec
@@ -2,13 +2,17 @@ Summary: VTE terminal widget library for GTK+ 2
Summary(pl.UTF-8): Biblioteka z kontrolką terminala VTE for GTK+ 2
Name: vte0
Version: 0.28.2
-Release: 16
+Release: 17
License: LGPL v2+
Group: X11/Libraries
Source0: http://ftp.gnome.org/pub/GNOME/sources/vte/0.28/vte-%{version}.tar.bz2
# Source0-md5: f07a4bf943194f94b7f142db8f7f36dc
Patch0: vte-alt-meta.patch
Patch1: repaint-bug.patch
+Patch2: vte-0.28.2-control.patch
+Patch3: vte-0.28.2-limit-arguments.patch
+Patch4: vte-0.28.2-paste-fix.diff
+Patch5: vte-python-bugfixes.patch
BuildRequires: autoconf >= 2.63
BuildRequires: automake >= 1:1.9
BuildRequires: docbook-dtd412-xml
@@ -123,6 +127,10 @@ Pliki programistyczne wiązań Pythona do VTE.
%setup -q -n vte-%{version}
%patch0 -p1
%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
%build
%configure \
diff --git a/vte-0.28.2-control.patch b/vte-0.28.2-control.patch
new file mode 100644
index 0000000..20e0ee1
--- /dev/null
+++ b/vte-0.28.2-control.patch
@@ -0,0 +1,68 @@
+--- a/src/keymap.c
++++ a/src/keymap.c
+@@ -286,6 +286,8 @@ static const struct _vte_keymap_entry _vte_keymap_GDK_Home[] = {
+ {cursor_all, keypad_all, fkey_vt220, 0, _VTE_CAP_CSI "1~", -1, X_NULL},
+ {cursor_all, keypad_all, fkey_hp, 0, _VTE_CAP_ESC "h", -1, X_NULL},
+ {cursor_all, keypad_all, fkey_nothpvt, 0, X_NULL, 0, "kh"},
++ {cursor_default, keypad_all, fkey_default, 0, _VTE_CAP_CSI "H", -1, X_NULL},
++ {cursor_app, keypad_all, fkey_default, 0, _VTE_CAP_SS3 "H", -1, X_NULL},
+ {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+ };
+
+@@ -293,6 +295,8 @@ static const struct _vte_keymap_entry _vte_keymap_GDK_End[] = {
+ {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "@7"},
+ {cursor_all, keypad_all, fkey_vt220, 0, _VTE_CAP_CSI "4~", -1, X_NULL},
+ {cursor_all, keypad_all, fkey_notvt220, 0, X_NULL, 0, "@7"},
++ {cursor_default, keypad_all, fkey_default, 0, _VTE_CAP_CSI "F", -1, X_NULL},
++ {cursor_app, keypad_all, fkey_default, 0, _VTE_CAP_SS3 "F", -1, X_NULL},
+ {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+ };
+
+@@ -504,10 +508,11 @@ static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Insert[] = {
+
+ static const struct _vte_keymap_entry _vte_keymap_GDK_KP_End[] = {
+ {cursor_all, keypad_default, fkey_all, 0, X_NULL, 0, "K4"},
+- {cursor_all, keypad_default, fkey_notvt220,
+- 0, _VTE_CAP_CSI "4~", -1, X_NULL},
++ {cursor_default, keypad_default, fkey_notvt220, 0, _VTE_CAP_CSI "F", -1, X_NULL},
++ {cursor_app, keypad_default, fkey_notvt220, 0, _VTE_CAP_SS3 "F", -1, X_NULL},
+ {cursor_all, keypad_default, fkey_vt220, 0, "1", 1, X_NULL},
+- {cursor_all, keypad_app, fkey_notvt220, 0, _VTE_CAP_CSI "4~", -1, X_NULL},
++ {cursor_default, keypad_app, fkey_notvt220, 0, _VTE_CAP_CSI "F", -1, X_NULL},
++ {cursor_app, keypad_app, fkey_notvt220, 0, _VTE_CAP_SS3 "F", -1, X_NULL},
+ {cursor_all, keypad_app, fkey_vt220, 0, _VTE_CAP_SS3 "q", -1, X_NULL},
+ {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+ };
+@@ -565,10 +570,11 @@ static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Right[] = {
+
+ static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Home[] = {
+ {cursor_all, keypad_default, fkey_all, 0, X_NULL, 0, "K1"},
+- {cursor_all, keypad_default, fkey_notvt220,
+- 0, _VTE_CAP_CSI "1~", -1, X_NULL},
++ {cursor_default, keypad_default, fkey_notvt220, 0, _VTE_CAP_CSI "H", -1, X_NULL},
++ {cursor_app, keypad_default, fkey_notvt220, 0, _VTE_CAP_SS3 "H", -1, X_NULL},
+ {cursor_all, keypad_default, fkey_vt220, 0, "7", 1, X_NULL},
+- {cursor_all, keypad_app, fkey_notvt220, 0, _VTE_CAP_CSI "1~", -1, X_NULL},
++ {cursor_default, keypad_app, fkey_notvt220, 0, _VTE_CAP_CSI "H", -1, X_NULL},
++ {cursor_app, keypad_app, fkey_notvt220, 0, _VTE_CAP_SS3 "H", -1, X_NULL},
+ {cursor_all, keypad_app, fkey_vt220, 0, _VTE_CAP_SS3 "w", -1, X_NULL},
+ {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+ };
+@@ -1280,6 +1286,8 @@ _vte_keymap_key_gets_modifiers(guint keyval)
+ case GDK_KEY (Right):
+ case GDK_KEY (Insert):
+ case GDK_KEY (Delete):
++ case GDK_KEY (Home):
++ case GDK_KEY (End):
+ case GDK_KEY (Page_Up):
+ case GDK_KEY (Page_Down):
+ case GDK_KEY (KP_Up):
+@@ -1288,6 +1296,8 @@ _vte_keymap_key_gets_modifiers(guint keyval)
+ case GDK_KEY (KP_Right):
+ case GDK_KEY (KP_Insert):
+ case GDK_KEY (KP_Delete):
++ case GDK_KEY (KP_Home):
++ case GDK_KEY (KP_End):
+ case GDK_KEY (KP_Page_Up):
+ case GDK_KEY (KP_Page_Down):
+ case GDK_KEY (F1):
diff --git a/vte-0.28.2-limit-arguments.patch b/vte-0.28.2-limit-arguments.patch
new file mode 100644
index 0000000..fd45407
--- /dev/null
+++ b/vte-0.28.2-limit-arguments.patch
@@ -0,0 +1,40 @@
+From feeee4b5832b17641e505b7083e0d299fdae318e Mon Sep 17 00:00:00 2001
+From: Christian Persch <chpe at gnome.org>
+Date: Sat, 19 May 2012 17:36:09 +0000
+Subject: emulation: Limit integer arguments to 65535
+
+To guard against malicious sequences containing excessively big numbers,
+limit all parsed numbers to 16 bit range. Doing this here in the parsing
+routine is a catch-all guard; this doesn't preclude enforcing
+more stringent limits in the handlers themselves.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=676090
+---
+diff --git a/src/table.c b/src/table.c
+index 140e8c8..85cf631 100644
+--- a/src/table.c
++++ b/src/table.c
+@@ -550,7 +550,7 @@ _vte_table_extract_numbers(GValueArray **array,
+ if (G_UNLIKELY (*array == NULL)) {
+ *array = g_value_array_new(1);
+ }
+- g_value_set_long(&value, total);
++ g_value_set_long(&value, CLAMP (total, 0, G_MAXUSHORT));
+ g_value_array_append(*array, &value);
+ } while (i++ < arginfo->length);
+ g_value_unset(&value);
+diff --git a/src/vteseq.c b/src/vteseq.c
+index 457c06a..46def5b 100644
+--- a/src/vteseq.c
++++ b/src/vteseq.c
+@@ -557,7 +557,7 @@ vte_sequence_handler_multiple(VteTerminal *terminal,
+ GValueArray *params,
+ VteTerminalSequenceHandler handler)
+ {
+- vte_sequence_handler_multiple_limited(terminal, params, handler, G_MAXLONG);
++ vte_sequence_handler_multiple_limited(terminal, params, handler, G_MAXUSHORT);
+ }
+
+ static void
+--
+cgit v0.9.0.2
diff --git a/vte-0.28.2-paste-fix.diff b/vte-0.28.2-paste-fix.diff
new file mode 100644
index 0000000..cc51ead
--- /dev/null
+++ b/vte-0.28.2-paste-fix.diff
@@ -0,0 +1,71 @@
+diff -ur vte-0.28.2.orig/src/vte.c vte-0.28.2/src/vte.c
+--- vte-0.28.2.orig/src/vte.c 2011-08-29 00:31:45.000000000 +0300
++++ vte-0.28.2/src/vte.c 2014-06-26 04:20:52.409371214 +0300
+@@ -5806,10 +5806,10 @@
+ p++;
+ }
+ }
+- if (terminal->pvt->screen->bracketed_paste_mode)
++ if (terminal->pvt->bracketed_paste_mode)
+ vte_terminal_feed_child(terminal, "\e[200~", -1);
+ vte_terminal_feed_child(terminal, paste, length);
+- if (terminal->pvt->screen->bracketed_paste_mode)
++ if (terminal->pvt->bracketed_paste_mode)
+ vte_terminal_feed_child(terminal, "\e[201~", -1);
+ g_free(paste);
+ }
+@@ -14065,14 +14065,12 @@
+ pvt->normal_screen.linefeed_mode = FALSE;
+ pvt->normal_screen.origin_mode = FALSE;
+ pvt->normal_screen.reverse_mode = FALSE;
+- pvt->normal_screen.bracketed_paste_mode = FALSE;
+ pvt->alternate_screen.scrolling_restricted = FALSE;
+ pvt->alternate_screen.sendrecv_mode = TRUE;
+ pvt->alternate_screen.insert_mode = FALSE;
+ pvt->alternate_screen.linefeed_mode = FALSE;
+ pvt->alternate_screen.origin_mode = FALSE;
+ pvt->alternate_screen.reverse_mode = FALSE;
+- pvt->alternate_screen.bracketed_paste_mode = FALSE;
+ pvt->cursor_visible = TRUE;
+ /* Reset the encoding. */
+ vte_terminal_set_encoding(terminal, NULL);
+@@ -14102,6 +14100,8 @@
+ pvt->mouse_last_y = 0;
+ /* Clear modifiers. */
+ pvt->modifiers = 0;
++ /* Reset miscellaneous stuff. */
++ pvt->bracketed_paste_mode = FALSE;
+ /* Cause everything to be redrawn (or cleared). */
+ vte_terminal_maybe_scroll_to_bottom(terminal);
+ _vte_invalidate_all(terminal);
+diff -ur vte-0.28.2.orig/src/vte-private.h vte-0.28.2/src/vte-private.h
+--- vte-0.28.2.orig/src/vte-private.h 2011-08-17 00:52:48.000000000 +0300
++++ vte-0.28.2/src/vte-private.h 2014-06-26 04:20:52.410371214 +0300
+@@ -219,7 +219,6 @@
+ gboolean sendrecv_mode; /* sendrecv mode */
+ gboolean insert_mode; /* insert mode */
+ gboolean linefeed_mode; /* linefeed mode */
+- gboolean bracketed_paste_mode;
+ struct vte_scrolling_region {
+ int start, end;
+ } scrolling_region; /* the region we scroll in */
+@@ -274,6 +273,7 @@
+ gboolean text_modified_flag;
+ gboolean text_inserted_flag;
+ gboolean text_deleted_flag;
++ gboolean bracketed_paste_mode;
+
+ /* Scrolling options. */
+ gboolean scroll_background;
+diff -ur vte-0.28.2.orig/src/vteseq.c vte-0.28.2/src/vteseq.c
+--- vte-0.28.2.orig/src/vteseq.c 2014-06-26 04:08:49.998358634 +0300
++++ vte-0.28.2/src/vteseq.c 2014-06-26 04:34:00.214384933 +0300
+@@ -737,7 +737,7 @@
+ GINT_TO_POINTER(TRUE),
+ NULL, NULL},
+ /* 2004: Bracketed paste mode. */
+- {2004, &terminal->pvt->screen->bracketed_paste_mode, NULL, NULL,
++ {2004, &terminal->pvt->bracketed_paste_mode, NULL, NULL,
+ GINT_TO_POINTER(FALSE),
+ GINT_TO_POINTER(TRUE),
+ NULL, NULL,},
diff --git a/vte-python-bugfixes.patch b/vte-python-bugfixes.patch
new file mode 100644
index 0000000..691b350
--- /dev/null
+++ b/vte-python-bugfixes.patch
@@ -0,0 +1,86 @@
+diff -ur vte-0.22.5-orig/python/vte.override vte-0.22.5-python-get-text/python/vte.override
+--- vte-0.22.5-orig/python/vte.override 2010-01-16 20:54:40.515014436 -0500
++++ vte-0.22.5-python-get-text/python/vte.override 2010-01-16 22:14:40.881828300 -0500
+@@ -306,9 +306,9 @@
+ }
+
+ cb = PySequence_GetItem(data, 0); /* INCREFs */
+- Py_XDECREF(cb);
+
+ if (!PyCallable_Check(cb)) {
++ Py_XDECREF(cb);
+ PyErr_SetString(PyExc_TypeError, "callback is not a callable object");
+ return FALSE;
+ }
+@@ -320,6 +320,7 @@
+ PyTuple_SetItem(args, 3, PySequence_GetItem(data, 2));
+
+ result = PyObject_CallObject(cb, args);
++ Py_XDECREF(cb);
+ Py_DECREF(args);
+
+ ret = (result && PyObject_IsTrue(result));
+@@ -332,7 +333,7 @@
+ build_attributes(GArray *attrs)
+ {
+ PyObject *py_attrs = PyTuple_New(attrs->len);
+- int count;
++ guint count;
+ PyObject *row = PyString_FromString("row");
+ PyObject *column = PyString_FromString("column");
+ PyObject *fore = PyString_FromString("fore");
+@@ -344,6 +345,8 @@
+ VteCharAttributes *cht;
+ PyObject *py_char_attr;
+
++ cht = &g_array_index(attrs, VteCharAttributes, count);
++
+ py_char_attr = Py_BuildValue("{S:l,S:l,S:N,S:N,S:I,S:I}",
+ row, cht->row,
+ column, cht->column,
+@@ -380,10 +383,9 @@
+ GArray *attrs = NULL;
+ char *text;
+ PyObject *py_attrs;
+- int count;
+ long length;
+
+- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|OO:terminal_get_text",
++ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|OOO:terminal_get_text",
+ kwlist, &callback, &do_attr, &data)) {
+ return NULL;
+ }
+@@ -451,10 +453,9 @@
+ GArray *attrs = NULL;
+ char *text;
+ PyObject *py_attrs;
+- int count;
+ long length;
+
+- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|OO:terminal_get_text_include_trailing_spaces",
++ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|OOO:terminal_get_text_include_trailing_spaces",
+ kwlist, &callback, &do_attr, &data)) {
+ return NULL;
+ }
+@@ -522,11 +523,10 @@
+ GArray *attrs = NULL;
+ char *text;
+ PyObject *py_attrs;
+- int count;
+ long length;
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+- "llllO|OO:terminal_get_text_range",
++ "llll|OOO:terminal_get_text_range",
+ kwlist,
+ &start_row, &start_col, &end_row, &end_col,
+ &callback, &do_attr, &data)) {
+@@ -641,7 +641,7 @@
+ static char *kwlist[] = { "column", "row", NULL };
+ gchar *ret;
+ glong column, row;
+- int *tag;
++ int tag;
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ll:VteTerminal.match_check", kwlist, &column, &row))
+ return NULL;
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/vte0.git/commitdiff/0d17364762b6d39261f3c1950d1a6c3b5270d6f3
More information about the pld-cvs-commit
mailing list