以前は大丈夫だったんだけどなぁ。Ctrl-jで100分以上先にjumpしようとすると落ちる。なぜなら、文字列のコピーが無防備だから。しかし6バイトしか取らないのは過激だ。
以前は大丈夫だったということは、誰かが入れたのか、stack破壊を保護するようになったからか。Fedora Extraに入っているxmms-1.2.10-18に当てる。
--- xmms-1.2.10/xmms/main.c.orig 2005-10-04 09:15:07.000000000 +0900 +++ xmms-1.2.10/xmms/main.c 2005-10-04 09:15:23.000000000 +0900 @@ -1472,7 +1472,7 @@ gboolean mainwin_keypress(GtkWidget * w, void mainwin_jump_to_time_cb(GtkWidget * widget, GtkWidget * entry) { guint min = 0, sec = 0, params, time; - gchar timestr[6]; + gchar timestr[512]; strcpy(timestr, gtk_entry_get_text(GTK_ENTRY(entry)));
というかstrcpyじゃなくてstrncpyにすべきなような気がするんだけど、そこまでやってないんだな。我ながら杜撰だ。
strncpy(timestr, sizeof(timestr), gtk_entry_get_text(….));
のほうがいいだろう。