Package: gtkterm Version: 0.99.5-1 Severity: important Tags: patch It seams that there are memory leaks in the package. Set the gtkterm to the text mode and insert some rx traffic.
-- System Information: Debian Release: 4.0 APT prefers stable APT policy: (500, 'stable') Architecture: amd64 (x86_64) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.18-4-amd64 Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Versions of packages gtkterm depends on: ii libatk1.0-0 1.12.4-3 The ATK accessibility toolkit ii libc6 2.3.6.ds1-13 GNU C Library: Shared libraries ii libcairo2 1.2.4-4 The Cairo 2D vector graphics libra ii libfontconfig1 2.4.2-1.2 generic font configuration library ii libglib2.0-0 2.12.4-2 The GLib library of C routines ii libgtk2.0-0 2.8.20-7 The GTK+ graphical user interface ii libncurses5 5.5-5 Shared libraries for terminal hand ii libpango1.0-0 1.14.8-5 Layout and rendering of internatio ii libvte4 1:0.12.2-5 Terminal emulator widget for GTK+ ii libx11-6 2:1.0.3-7 X11 client-side library ii libxcursor1 1.1.7-4 X cursor management library ii libxext6 1:1.0.1-2 X11 miscellaneous extension librar ii libxft2 2.1.8.2-8 FreeType-based font drawing librar ii libxi6 1:1.0.1-4 X11 Input extension library ii libxinerama1 1:1.0.1-4.1 X11 Xinerama extension library ii libxrandr2 2:1.1.0.2-5 X11 RandR extension library ii libxrender1 1:0.9.1-3 X Rendering Extension client libra gtkterm recommends no packages. -- no debconf information
diff -pur -x '*[^c$]' gtkterm-0.99.5.old/src/buffer.c gtkterm-0.99.5/src/buffer.c --- gtkterm-0.99.5.old/src/buffer.c 2005-09-22 22:33:44.000000000 +0300 +++ gtkterm-0.99.5/src/buffer.c 2007-06-03 19:14:14.000000000 +0300 @@ -90,6 +90,7 @@ void put_chars(char *chars, unsigned int if(buffer == NULL) { i18n_printf(_("ERROR : Buffer is not initialized !\n")); + g_string_free(buffer_tmp,TRUE); return; } @@ -119,6 +120,7 @@ void put_chars(char *chars, unsigned int if(write_func != NULL) write_func(characters, size); + g_string_free(buffer_tmp,TRUE); } void write_buffer(void) diff -pur -x '*[^c$]' gtkterm-0.99.5.old/src/i18n.c gtkterm-0.99.5/src/i18n.c --- gtkterm-0.99.5.old/src/i18n.c 2005-09-22 22:52:32.000000000 +0300 +++ gtkterm-0.99.5/src/i18n.c 2007-06-03 18:29:26.000000000 +0300 @@ -41,6 +41,7 @@ static char *iconv_from_utf8_to_locale(c char *buffer_ptr; char *string_ptr; char *string; + char *tmp; const size_t buffer_inc = 80; // Increment buffer size in 80 bytes step size_t buffer_size; @@ -84,12 +85,14 @@ static char *iconv_from_utf8_to_locale(c buffer_size += buffer_inc; buffer_size_left = buffer_inc; old_buffer = buffer; - buffer = (char *) realloc(buffer, buffer_size + 1); - if (buffer == NULL) + tmp = (char *) realloc(buffer, buffer_size + 1); + if (tmp == NULL) { + free(buffer); free(string); return g_strdup(fallback_string); } + buffer = tmp; buffer_ptr = (buffer_ptr - old_buffer) + buffer; } } diff -pur -x '*[^c$]' gtkterm-0.99.5.old/src/widgets.c gtkterm-0.99.5/src/widgets.c --- gtkterm-0.99.5.old/src/widgets.c 2005-09-22 23:13:00.000000000 +0300 +++ gtkterm-0.99.5/src/widgets.c 2007-06-03 19:24:02.000000000 +0300 @@ -462,6 +462,7 @@ void put_text(gchar *string, guint size) } vte_terminal_feed(VTE_TERMINAL(display), buffer_tmp->str, size); + g_string_free(buffer_tmp,TRUE); } gint send_serial(gchar *string, gint len)