CUIで使えるIP Messengerでファイルを送れるように頑張ってみる(途中)

前回とりあえず、起動できるようにまでした、ipmsg4linux http://code.google.com/p/ipmsg4linux/
ですが、メッセージの日本語化はともかく、目的である、ファイルの転送はなんとかしてみたいなぁーっと
ちょっと追っかけてみました。ちなみにC言語力はかなり低い(というかほぼ無い。。。)ので、
どなたかご助言頂けるとホントに助かります。。。

コメントも頂いていたのですが、

64bit環境がないので試していませんが、filelist.c:42 でメモリ破壊がおきるようですので int から char * に変更して、
filereceiver.c:18 の printf() の引数が足りないので適当に補ってやればうまくいきませんか?
32bit環境でファイル受信に成功しました。

この変もいろいろいじったのですが、状況は変更できず(printfとかほんと引数なかった。。。。)
ということで、とりあえず、GDBさんを召喚。。。

 gdb ./messager
GNU gdb (GDB) Red Hat Enterprise Linux (7.1-29.el6)
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/daisuke/messenger/ipmsg4linux/messager/messager...done.

とりあえず、該当箇所まで起動して、該当箇所まで、追っかけてみる。

(gdb) run
Starting program: /home/daisuke/messenger/ipmsg4linux/messager/messager 
[Thread debugging using libthread_db enabled]
[New Thread 0x7ffff7fce700 (LWP 28142)]
[New Thread 0x7ffff75cd700 (LWP 28143)]
>[New Thread 0x7ffff6bcc700 (LWP 28144)]
File Send thread start...
user 192.168.11.30 login !
user 192.168.11.27 login !
cd /home/daisuke/
current directory change to: '/home/daisuke'
>sendfile 192.168.11.30 ipmsg.log

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff7fce700 (LWP 28142)]
0x00000000004020ce in ipmNewFromBytes (buf=0x7ffff7fcc320 "1", bufSize=99)
    at ipmessage.c:187
187				pMsg->files[i]->msgNo = pMsg->no;
Missing separate debuginfos, use: debuginfo-install atk-1.28.0-2.el6.x86_64 cairo-1.8.8-3.1.el6.x86_64 expat-2.0.1-9.1.el6.x86_64 fontconfig-2.8.0-3.el6.x86_64 freetype-2.3.11-6.el6_0.2.x86_64 glib2-2.22.5-5.el6.x86_64 glibc-2.12-1.7.el6_0.5.x86_64 gtk2-2.18.9-4.el6.x86_64 libX11-1.3-2.el6.x86_64 libXau-1.0.5-1.el6.x86_64 libXcomposite-0.4.1-2.el6.x86_64 libXcursor-1.1.10-2.el6.x86_64 libXdamage-1.1.2-1.el6.x86_64 libXext-1.1-3.el6.x86_64 libXfixes-4.0.4-1.el6.x86_64 libXi-1.3-3.el6.x86_64 libXinerama-1.1-1.el6.x86_64 libXrandr-1.3.0-4.el6.x86_64 libXrender-0.9.5-1.el6.x86_64 libpng-1.2.44-1.el6.x86_64 libselinux-2.0.94-2.el6.x86_64 libxcb-1.5-1.el6.x86_64 pango-1.28.1-3.el6_0.5.x86_64 pixman-0.18.4-1.el6_0.1.x86_64 zlib-1.2.3-25.el6.x86_64
(gdb) backtrace
#0  0x00000000004020ce in ipmNewFromBytes (buf=0x7ffff7fcc320 "1", bufSize=99)
    at ipmessage.c:187
#1  0x00000000004030ac in receiverAccept () at receiver.c:181
#2  0x0000000000402c89 in receiverRun () at receiver.c:70
#3  0x0000003bdba077e1 in start_thread () from /lib64/libpthread.so.0
#4  0x0000003bdb6e18ed in clone () from /lib64/libc.so.6
(gdb) frame 0
#0  0x00000000004020ce in ipmNewFromBytes (buf=0x7ffff7fcc320 "1", bufSize=99)
    at ipmessage.c:187
187				pMsg->files[i]->msgNo = pMsg->no;
(gdb) list
182				}
183				if(p== NULL){
184					break;
185				}
186				pMsg->files[i] = sendFileNewFromBytes(p);
187				pMsg->files[i]->msgNo = pMsg->no;
188			}	
189		}
190	
191
(gdb) print p
$5 = (int *) 0x7ffff7fcc36b	

ipmessage.cの187行目でメモリ破壊ですかね??
でも、その前処理がおかしいのかな??

ということで、sendfile.c のsendFileNewFromBytes:35を見てみると。。。

SendFile* sendFileNewFromBytes(char buffer[512]){
        SendFile *sendFile = malloc(sizeof(SendFile));
        memset(sendFile, 0,sizeof(SendFile));

        sscanf(buffer,"%d:%[^:]:%x:%x:%s",&sendFile->no,sendFile->fileName,&sendFile->size,&sendFile->lastModifyTime,sendFile->properties);

        return sendFile;
}

あれ??渡しているポインタintですけど??
キャストしたらいいのかな??とか思ったりするんだけど、どうなおしたらいいのやら。。。

C言語も頑張らないといけないですかね。。。(ってかキホンだろって?? (^_^;))
でも、とりあえず、ファイルの送受信がしたいよぉー。。。(T T)

誰かできる方助けて下さいませ。。。m(_ _)m