]> git.pld-linux.org Git - packages/Eterm.git/blame - Eterm-deadkeys.patch
- security rebuild: CVE-2006-0224
[packages/Eterm.git] / Eterm-deadkeys.patch
CommitLineData
f890d15f 1http://bugs.gentoo.org/91878
2
3 Tue Mar 15 16:44:09 2005 Michael Jennings (mej)
4
5 Reverted part of a patch from Chris Schoeneman <crs23@bigfoot.com>
6 (changelog entry "Fri Jun 25 17:48:24 2004") which broke dead keys and
7 compose-key sequences.
8
9 Fixed error in saving of cut_chars attribute.
10
11Index: src/misc.c
12===================================================================
13RCS file: /cvsroot/enlightenment/eterm/Eterm/src/misc.c,v
14retrieving revision 1.25
15retrieving revision 1.26
16diff -u -r1.25 -r1.26
17--- src/misc.c 11 Jan 2004 22:10:29 -0000 1.25
18+++ src/misc.c 15 Mar 2005 21:48:02 -0000 1.26
19@@ -223,6 +223,53 @@
20 return (pnew - str);
21 }
22
23+spif_charptr_t
24+escape_string(spif_charptr_t str, spif_char_t quote, spif_int32_t maxlen)
25+{
26+ spif_charptr_t buff, s = str, pbuff;
27+
28+ D_STRINGS(("escape_string(%s %c %ld)\n", (char *) str, quote, maxlen));
29+ if (! quote) {
30+ quote = '\"';
31+ }
32+
33+ /* The escaped string will be at most twice the length of the original. */
34+ buff = SPIF_CAST(charptr) MALLOC(strlen(SPIF_CAST_PTR(char) str) * 2 + 1);
35+
36+ /* Copy and escape the string from str into buff. */
37+ for (pbuff = buff; (*s); s++, pbuff++) {
38+ if (*s == quote) {
39+ D_STRINGS(("Double-escaping \'%c\' at position %d\n", *s, s - str));
40+ *pbuff = '\\';
41+ pbuff++;
42+ *pbuff = '\\';
43+ pbuff++;
44+ } else {
45+ if (quote == '\"') {
46+ if ((*s == '\\') || (*s == '`')) {
47+ D_STRINGS(("Escaping \'%c\' at position %d\n", *s, s - str));
48+ *pbuff = '\\';
49+ pbuff++;
50+ }
51+ }
52+ }
53+ D_STRINGS(("Copying \'%c\' at position %d\n", *s, s - str));
54+ *pbuff = *s;
55+ }
56+ *pbuff = 0;
57+
58+ if (maxlen) {
59+ /* Given maxlen, we know "str" can hold at least "maxlen" chars. */
60+ /*if (!spiftool_safe_strncpy(str, buff, maxlen)) {
61+ str[maxlen] = 0;
62+ }*/
63+ FREE(buff);
64+ return str;
65+ } else {
66+ return buff;
67+ }
68+}
69+
70 char *
71 safe_print_string(const char *str, unsigned long len)
72 {
73Index: src/misc.h
74===================================================================
75RCS file: /cvsroot/enlightenment/eterm/Eterm/src/misc.h,v
76retrieving revision 1.15
77retrieving revision 1.16
78diff -u -r1.15 -r1.16
79--- src/misc.h 11 Jan 2004 22:10:29 -0000 1.15
80+++ src/misc.h 15 Mar 2005 21:48:02 -0000 1.16
81@@ -40,6 +40,7 @@
82 extern unsigned long str_leading_match(register const char *, register const char *);
83 extern char *str_trim(char *str);
84 extern int parse_escaped_string(char *str);
85+extern spif_charptr_t escape_string(spif_charptr_t str, spif_char_t quote, spif_int32_t maxlen);
86 extern char *safe_print_string(const char *buff, unsigned long len);
87 extern unsigned long add_carriage_returns(unsigned char *buff, unsigned long cnt);
88 extern unsigned char mkdirhier(const char *);
89Index: src/options.c
90===================================================================
91RCS file: /cvsroot/enlightenment/eterm/Eterm/src/options.c,v
92retrieving revision 1.135
93retrieving revision 1.136
94diff -u -r1.135 -r1.136
95--- src/options.c 23 Feb 2005 20:38:19 -0000 1.135
96+++ src/options.c 15 Mar 2005 21:48:02 -0000 1.136
97@@ -3850,7 +3863,10 @@
98 }
99 #ifdef CUTCHAR_OPTION
100 if (rs_cutchars) {
101- fprintf(fp, " cut_chars '%s'\n", rs_cutchars);
102+ spif_charptr_t cut_chars_escaped;
103+
104+ cut_chars_escaped = escape_string(SPIF_CAST(charptr) rs_cutchars, '\"', 0);
105+ fprintf(fp, " cut_chars \"%s\"\n", (char *) cut_chars_escaped);
106 }
107 #endif
108 fprintf(fp, "end misc\n\n");
109Index: src/windows.c
110===================================================================
111RCS file: /cvsroot/enlightenment/eterm/Eterm/src/windows.c,v
112retrieving revision 1.68
113retrieving revision 1.69
114diff -u -r1.68 -r1.69
115--- src/windows.c 14 Dec 2004 23:24:33 -0000 1.68
116+++ src/windows.c 15 Mar 2005 21:48:12 -0000 1.69
117@@ -473,9 +473,7 @@
118 XClearWindow(Xdisplay, TermWin.vt);
119 }
120 XDefineCursor(Xdisplay, TermWin.vt, TermWin_cursor);
121- TermWin.mask = (KeyPressMask | EnterWindowMask | LeaveWindowMask | ExposureMask
122- | ButtonPressMask | ButtonReleaseMask | Button1MotionMask
123- | Button2MotionMask | Button3MotionMask);
124+ TermWin.mask = (EnterWindowMask | LeaveWindowMask | ExposureMask | ButtonPressMask | ButtonReleaseMask | Button1MotionMask | Button2MotionMask | Button3MotionMask);
125 XSelectInput(Xdisplay, TermWin.vt, TermWin.mask);
126
127 /* If the user wants a specific desktop, tell the WM that */
This page took 0.645508 seconds and 4 git commands to generate.