Bug#893167: Stack smashing protection trigged in eboard

2018-07-31 Thread Felipe Bergo
Thank you, I have just committed a fix for this to the github repository,
https://github.com/fbergo/eboard



On Tue, Jul 31, 2018 at 2:54 PM Bernhard Übelacker 
wrote:

> Hello,
> just tried to reproduce the stack smashing.
>
> It looks like the variable "gdouble c[3];" in colorb_csok
> needs to be a "gdouble c[4];".
>
> Did not find an related upstream ticket, neither in old SF nor at Github.
> Also at Github this function was not yet changed, so this should be
> forwarded to upstream.
>
> See details below.
>
> Kind regards,
> Bernhard
>
>
>
>
> # With a locally rebuild version to get debug information.
>
> (gdb) cont
> Continuing.
>
> Hardware watchpoint 2: *0x7fffd428
>
> Old value = -1459212032
> New value = 0
> gtk_color_selection_get_color (colorsel=0x55992370,
> color=0x7fffd410) at ./gtk/gtkcolorsel.c:2579
> 2579./gtk/gtkcolorsel.c: Datei oder Verzeichnis nicht gefunden.
> 1: x/i $pc
> => 0x77a01c6e :  add$0x8,%rsp
> (gdb) bt
> #0  0x77a01c6e in gtk_color_selection_get_color
> (colorsel=0x55992370, color=0x7fffd410) at ./gtk/gtkcolorsel.c:2579
> #1  0x555e6cdc in colorb_csok(_GtkWidget*, void*) (b= out>, data=0x558ec810) at widgetproxy.cc:364
> #2  0x764f0f6d in g_closure_invoke () at
> /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
> #3  0x76503d3e in  () at
> /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
> #4  0x7650c3f5 in g_signal_emit_valist () at
> /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
> #5  0x7650ce0f in g_signal_emit () at
> /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
> #6  0x779e7785 in gtk_real_button_released (button=0x559564e0)
> at ./gtk/gtkbutton.c:1712
> #7  0x764f0f6d in g_closure_invoke () at
> /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
> #8  0x76503e0e in  () at
> /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
> #9  0x7650c3f5 in g_signal_emit_valist () at
> /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
> #10 0x7650ce0f in g_signal_emit () at
> /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
> #11 0x779e6709 in gtk_button_button_release 
> (widget=widget@entry=0x559564e0,
> event=) at ./gtk/gtkbutton.c:1604
> #12 0x77a8c2bb in _gtk_marshal_BOOLEAN__BOXED
> (closure=0x556afa50, return_value=0x7fffdec0,
> n_param_values=, param_values=0x7fffdf20,
> invocation_hint=, marshal_data=) at
> ./gtk/gtkmarshalers.c:84
> #13 0x764f0f6d in g_closure_invoke () at
> /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
> #14 0x76503ac8 in  () at
> /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
> #15 0x7650bd8f in g_signal_emit_valist () at
> /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
> #16 0x7650ce0f in g_signal_emit () at
> /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
> #17 0x77ba227c in gtk_widget_event_internal 
> (widget=widget@entry=0x559564e0,
> event=event@entry=0x55a0f560) at ./gtk/gtkwidget.c:5010
> #18 0x77ba2517 in IA__gtk_widget_event 
> (widget=widget@entry=0x559564e0,
> event=event@entry=0x55a0f560) at ./gtk/gtkwidget.c:4807
> #19 0x77a8a55c in IA__gtk_propagate_event (widget=0x559564e0,
> event=0x55a0f560) at ./gtk/gtkmain.c:2503
> #20 0x77a8a95b in IA__gtk_main_do_event (event=) at
> ./gtk/gtkmain.c:1698
> #21 0x7770005c in gdk_event_dispatch (source=,
> callback=, user_data=) at
> ./gdk/x11/gdkevents-x11.c:2425
> #22 0x76215287 in g_main_context_dispatch () at
> /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
> #23 0x762154c0 in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
> #24 0x762157d2 in g_main_loop_run () at
> /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
> #25 0x77a89987 in IA__gtk_main () at ./gtk/gtkmain.c:1270
> #26 0x5557d854 in main (argc=, argv= out>) at main.cc:108
> #27 0x755b0b17 in __libc_start_main (main=0x5557d630 ,
> argc=1, argv=0x7fffe578, init=, fini=,
> rtld_fini=, stack_end=0x7fffe568)
> at ../csu/libc-start.c:310
> #28 0x5557dfea in _start () at main.cc:97
> (gdb)
>
>
>
>
>
> (gdb) list gtk_color_selection_get_color
> 2566void
> 2567gtk_color_selection_get_color (GtkColorSelection *colorsel,
> 2568   gdouble   *color)
> 2569{
> 2570  ColorSelectionPrivate *priv;
> 2571
> 2572  g_return_if_fail (GTK_IS_COLOR_SELECTION (colorsel));
> 2573
> 2574  priv = colorsel->private_data;
> 2575  color[0] = priv->color[COLORSEL_RED];
> 2576  color[1] = priv->color[COLORSEL_GREEN];
> 2577  color[2] = priv->color[COLORSEL_BLUE];
> 2578  color[3] = priv->has_opacity ? priv->color[COLORSEL_OPACITY] :
> 65535; <--- Here we access memory beyond the variable
> "gdouble c[3];"
> 2579}
>
>
>
>
> (gdb) list colorb_csok
> 358
> 359 void colorb_csok(GtkWidget *b,gpointer data) {
> 360   ColorButton *me;
> 361   me=(ColorButton *)data;
> 362   

Bug#893167: Stack smashing protection trigged in eboard

2018-07-31 Thread Bernhard Übelacker
Hello,
just tried to reproduce the stack smashing.

It looks like the variable "gdouble c[3];" in colorb_csok
needs to be a "gdouble c[4];".

Did not find an related upstream ticket, neither in old SF nor at Github.
Also at Github this function was not yet changed, so this should be
forwarded to upstream.

See details below.

Kind regards,
Bernhard




# With a locally rebuild version to get debug information.

(gdb) cont
Continuing.

Hardware watchpoint 2: *0x7fffd428

Old value = -1459212032
New value = 0
gtk_color_selection_get_color (colorsel=0x55992370, color=0x7fffd410) 
at ./gtk/gtkcolorsel.c:2579
2579./gtk/gtkcolorsel.c: Datei oder Verzeichnis nicht gefunden.
1: x/i $pc
=> 0x77a01c6e :  add$0x8,%rsp
(gdb) bt
#0  0x77a01c6e in gtk_color_selection_get_color 
(colorsel=0x55992370, color=0x7fffd410) at ./gtk/gtkcolorsel.c:2579
#1  0x555e6cdc in colorb_csok(_GtkWidget*, void*) (b=, 
data=0x558ec810) at widgetproxy.cc:364
#2  0x764f0f6d in g_closure_invoke () at 
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#3  0x76503d3e in  () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#4  0x7650c3f5 in g_signal_emit_valist () at 
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#5  0x7650ce0f in g_signal_emit () at 
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#6  0x779e7785 in gtk_real_button_released (button=0x559564e0) at 
./gtk/gtkbutton.c:1712
#7  0x764f0f6d in g_closure_invoke () at 
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#8  0x76503e0e in  () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#9  0x7650c3f5 in g_signal_emit_valist () at 
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#10 0x7650ce0f in g_signal_emit () at 
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#11 0x779e6709 in gtk_button_button_release 
(widget=widget@entry=0x559564e0, event=) at 
./gtk/gtkbutton.c:1604
#12 0x77a8c2bb in _gtk_marshal_BOOLEAN__BOXED (closure=0x556afa50, 
return_value=0x7fffdec0, n_param_values=, 
param_values=0x7fffdf20, invocation_hint=, 
marshal_data=) at ./gtk/gtkmarshalers.c:84
#13 0x764f0f6d in g_closure_invoke () at 
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#14 0x76503ac8 in  () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#15 0x7650bd8f in g_signal_emit_valist () at 
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#16 0x7650ce0f in g_signal_emit () at 
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#17 0x77ba227c in gtk_widget_event_internal 
(widget=widget@entry=0x559564e0, event=event@entry=0x55a0f560) at 
./gtk/gtkwidget.c:5010
#18 0x77ba2517 in IA__gtk_widget_event 
(widget=widget@entry=0x559564e0, event=event@entry=0x55a0f560) at 
./gtk/gtkwidget.c:4807
#19 0x77a8a55c in IA__gtk_propagate_event (widget=0x559564e0, 
event=0x55a0f560) at ./gtk/gtkmain.c:2503
#20 0x77a8a95b in IA__gtk_main_do_event (event=) at 
./gtk/gtkmain.c:1698
#21 0x7770005c in gdk_event_dispatch (source=, 
callback=, user_data=) at 
./gdk/x11/gdkevents-x11.c:2425
#22 0x76215287 in g_main_context_dispatch () at 
/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#23 0x762154c0 in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#24 0x762157d2 in g_main_loop_run () at 
/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#25 0x77a89987 in IA__gtk_main () at ./gtk/gtkmain.c:1270
#26 0x5557d854 in main (argc=, argv=) at 
main.cc:108
#27 0x755b0b17 in __libc_start_main (main=0x5557d630 , 
argc=1, argv=0x7fffe578, init=, fini=, 
rtld_fini=, stack_end=0x7fffe568)
at ../csu/libc-start.c:310
#28 0x5557dfea in _start () at main.cc:97
(gdb)





(gdb) list gtk_color_selection_get_color
2566void
2567gtk_color_selection_get_color (GtkColorSelection *colorsel,
2568   gdouble   *color)
2569{
2570  ColorSelectionPrivate *priv;
2571  
2572  g_return_if_fail (GTK_IS_COLOR_SELECTION (colorsel));
2573  
2574  priv = colorsel->private_data;
2575  color[0] = priv->color[COLORSEL_RED];
2576  color[1] = priv->color[COLORSEL_GREEN];
2577  color[2] = priv->color[COLORSEL_BLUE];
2578  color[3] = priv->has_opacity ? priv->color[COLORSEL_OPACITY] : 65535; 
<--- Here we access memory beyond the variable "gdouble c[3];"
2579}




(gdb) list colorb_csok
358
359 void colorb_csok(GtkWidget *b,gpointer data) {
360   ColorButton *me;
361   me=(ColorButton *)data;
362   gdouble c[3];
363   int v[3];
364   
gtk_color_selection_get_color(GTK_COLOR_SELECTION(GTK_COLOR_SELECTION_DIALOG(me->colordlg)->colorsel),c);
365   v[0]=(int)(c[0]*255.0);
366   v[1]=(int)(c[1]*255.0);
367   v[2]=(int)(c[2]*255.0);
368   me->ColorValue=(v[0]<<16)|(v[1]<<8)|v[2];
369   gtk_grab_remove(me->colordlg);
370   

Bug#893167: Stack smashing protection trigged in eboard

2018-03-16 Thread Chillfan
Package: eboard
Version: 1.1.1-6.1+b1
Severity: grave

Bug is present in stable/stretch, others not tested.

Stock 4.9 kernel on amd64.

If you need any more info than this please let me know. I've been able to 
reproduce on two different systems both amd64.

To reproduce:

When eboard is started go to settings > preferences > click squares to change 
the colours for > choose any colour from the palet> click OK

This will result in a crash.

The output:

\*\*\* stack smashing detected ***: eboard terminated

=== Backtrace: =

/lib/x86_64-linux-gnu/libc.so.6(+0x70bfb)\[0x7f8923036bfb\]

/lib/x86\_64-linux-gnu/libc.so.6(\_\_fortify_fail+0x37)\[0x7f89230bf1f7\]

/lib/x86\_64-linux-gnu/libc.so.6(\_\_fortify_fail+0x0)\[0x7f89230bf1c0\]

eboard(+0x92e8c)\[0x55aeeb1fce8c\]

/usr/lib/x86\_64-linux-gnu/libgobject-2.0.so.0(g\_closure_invoke+0x145)\[0x7f8924645f75\]

/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0(+0x21f82)\[0x7f8924657f82\]

/usr/lib/x86\_64-linux-gnu/libgobject-2.0.so.0(g\_signal\_emit\_valist+0xe3c)\[0x7f8924660bdc\]

/usr/lib/x86\_64-linux-gnu/libgobject-2.0.so.0(g\_signal_emit+0x8f)\[0x7f8924660fbf\]

/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0(+0x8d0c5)\[0x7f8925d2e0c5\]

/usr/lib/x86\_64-linux-gnu/libgobject-2.0.so.0(g\_closure_invoke+0x145)\[0x7f8924645f75\]

/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0(+0x2195c)\[0x7f892465795c\]

/usr/lib/x86\_64-linux-gnu/libgobject-2.0.so.0(g\_signal\_emit\_valist+0xe3c)\[0x7f8924660bdc\]

/usr/lib/x86\_64-linux-gnu/libgobject-2.0.so.0(g\_signal_emit+0x8f)\[0x7f8924660fbf\]

/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0(+0x8c029)\[0x7f8925d2d029\]

/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0(+0x1317bc)\[0x7f8925dd27bc\]

/usr/lib/x86\_64-linux-gnu/libgobject-2.0.so.0(g\_closure_invoke+0x145)\[0x7f8924645f75\]

/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0(+0x2237d)\[0x7f892465837d\]

/usr/lib/x86\_64-linux-gnu/libgobject-2.0.so.0(g\_signal\_emit\_valist+0x8df)\[0x7f892466067f\]

/usr/lib/x86\_64-linux-gnu/libgobject-2.0.so.0(g\_signal_emit+0x8f)\[0x7f8924660fbf\]

/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0(+0x2498ac)\[0x7f8925eea8ac\]

/usr/lib/x86\_64-linux-gnu/libgtk-x11-2.0.so.0(gtk\_propagate_event+0xc4)\[0x7f8925dd0f84\]

/usr/lib/x86\_64-linux-gnu/libgtk-x11-2.0.so.0(gtk\_main\_do\_event+0x2cb)\[0x7f8925dd133b\]

/usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0(+0x5acbc)\[0x7f8925a46cbc\]

/lib/x86\_64-linux-gnu/libglib-2.0.so.0(g\_main\_context\_dispatch+0x2a7)\[0x7f892436c7f7\]

/lib/x86_64-linux-gnu/libglib-2.0.so.0(+0x4aa60)\[0x7f892436ca60\]

/lib/x86\_64-linux-gnu/libglib-2.0.so.0(g\_main\_loop\_run+0xc2)\[0x7f892436cd82\]

/usr/lib/x86\_64-linux-gnu/libgtk-x11-2.0.so.0(gtk\_main+0xb7)\[0x7f8925dd03b7\]

eboard(+0x25cb2)\[0x55aeeb18fcb2\]

/lib/x86\_64-linux-gnu/libc.so.6(\_\_libc\_start\_main+0xf1)\[0x7f8922fe62e1\]

eboard(+0x2645a)\[0x55aeeb19045a\]

=== Memory map: 

55aeeb16a000-55aeeb23 r-xp  fe:01 1179928    
/usr/games/eboard

55aeeb42f000-55aeeb433000 r--p 000c5000 fe:01 1179928    
/usr/games/eboard

55aeeb433000-55aeeb43c000 rw-p 000c9000 fe:01 1179928    
/usr/games/eboard

55aeeb43c000-55aeeb441000 rw-p  00:00 0

55aeec46d000-55aeec835000 rw-p  00:00 0  
\[heap\]

7f891e2f5000-7f891e3f5000 rw-s  00:05 421101572  
/SYSV (deleted)

7f891e3f5000-7f891e449000 r--p  fe:01 1310053    
/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf

7f891e449000-7f891e46c000 rw-p  00:00 0

7f891e4af000-7f891e55c000 r--p  fe:01 1310050    
/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf

7f891e55c000-7f891e615000 r--p  fe:01 1310051    
/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf

7f891e659000-7f891e6b9000 rw-s  00:05 419561475  
/SYSV (deleted)

7f891e6b9000-7f891e6bf000 r-xp  fe:01 1184048    
/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xpm.so

7f891e6bf000-7f891e8be000 ---p 6000 fe:01 1184048    
/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xpm.so

7f891e8be000-7f891e8bf000 r--p 5000 fe:01 1184048    
/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xpm.so

7f891e8bf000-7f891e8c rw-p 6000 fe:01 1184048    
/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xpm.so

7f891e8c-7f891e8c4000 r-xp  fe:01 261221 
/lib/x86_64-linux-gnu/libuuid.so.1.3.0

7f891e8c4000-7f891eac3000 ---p 4000 fe:01 261221 
/lib/x86_64-linux-gnu/libuuid.so.1.3.0

7f891eac3000-7f891eac4000 r--p 3000 fe:01 261221 
/lib/x86_64-linux-gnu/libuuid.so.1.3.0

7f891eac4000-7f891eac5000 rw-p 4000 fe:01 261221