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(….));

のほうがいいだろう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です