xmmsのバッファオーバーラン
以前は大丈夫だったんだけどなぁ。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(….)); のほうがいいだろう。