diff -up pidgin-2.10.7/pidgin/gtkimhtml.c.CVE-2013-6477 pidgin-2.10.7/pidgin/gtkimhtml.c --- pidgin-2.10.7/pidgin/gtkimhtml.c.CVE-2013-6477 2013-02-11 04:16:53.000000000 -0500 +++ pidgin-2.10.7/pidgin/gtkimhtml.c 2014-01-27 12:20:54.660113325 -0500 @@ -514,7 +514,13 @@ gtk_imhtml_tip_paint (GtkIMHtml *imhtml) g_return_val_if_fail(GTK_IS_IMHTML(imhtml), FALSE); - layout = gtk_widget_create_pango_layout(imhtml->tip_window, imhtml->tip); + /* We set the text in a separate function call so we can specify a + max length. This is important so the tooltip isn't too wide for + the screen, and also because some X library function exits the + process when it can't allocate enough memory for a super wide + tooltip. */ + layout = gtk_widget_create_pango_layout(imhtml->tip_window, NULL); + pango_layout_set_text(layout, imhtml->tip, 200); gtk_paint_flat_box (imhtml->tip_window->style, imhtml->tip_window->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT, NULL, imhtml->tip_window, @@ -561,7 +567,15 @@ gtk_imhtml_tip (gpointer data) G_CALLBACK (gtk_imhtml_tip_paint), imhtml); gtk_widget_ensure_style (imhtml->tip_window); - layout = gtk_widget_create_pango_layout(imhtml->tip_window, imhtml->tip); + + /* We set the text in a separate function call so we can specify a + max length. This is important so the tooltip isn't too wide for + the screen, and also because some X library function exits the + process when it can't allocate enough memory for a super wide + tooltip. */ + layout = gtk_widget_create_pango_layout(imhtml->tip_window, NULL); + pango_layout_set_text(layout, imhtml->tip, 200); + font = pango_context_load_font(pango_layout_get_context(layout), imhtml->tip_window->style->font_desc);