#5 OBEX continue message contains data

closed-out-of-date
nobody
None
5
2010-12-16
2002-06-11
No

The code in the file obex_client.c in the function obex_client
expects no data in the continue message returned by the
obex client when infact it is perfectly valid to do so and
some protocols that work over OBEX do this. (Syncml)

Really the event callback should be called with a continue
event specifyer and the delete part set to false and then continue
tru the case statment.

It also causes the library to SEGV Trace and other info shown below

(gdb) run
Starting program: /home/gbushell/source/openobex-apps-0.9.8/src/obex_test
Using IRDA transport
OBEX Interactive test client/server.
> c
Connect OK!
Version: 0x10. Flags: 0x00
> p
PUT file (local, remote)> /home/gbushell/t68backup/pb.vcf telecom/pb.vcf
name=/home/gbushell/t68backup/pb.vcf, size=14730
Going to send 14730 bytes
Made some progress...
Made some progress...
obex_client() STATE_SEND. Didn't excpect data from peer (23)
90 00 17 4c 00 14 01 0c 30 30 30 30 31 43 30 30 30 30 30 30 02 01 34
Unknown event 05!

Program received signal SIGSEGV, Segmentation fault.
0x4004927f in obex_client (self=0x804c988, msg=0x804ca28, final=128) at obex_client.c:67
67 obex_deliver_event(self, OBEX_EV_REQDONE, self->object->opcode, rsp,
TRUE);
(gdb) print self
$1 = (obex_t *) 0x804c988
(gdb) print *self
$2 = {mtu_tx = 512, mtu_rx = 1024, fd = 7, serverfd = -1, state = 2, keepserver = 0,
filterhint = 0, filterias = 0, tx_msg = 0x804ce50, rx_msg = 0x804ca28, object = 0x0,
eventcb = 0x80490e0 <obex_event>, trans = {type = 1, connected = 1, mtu = 253, self = {
irda = {sir_family = 0, sir_lsap_sel = 0 '\0', sir_addr = 957200443,
sir_name = '\0' <repeats 24 times>}, inet = {sin_family = 0, sin_port = 0,
sin_addr = {s_addr = 957200443}, sin_zero = "\0\0\0\0\0\0\0"}}, peer = {irda = {
sir_family = 23, sir_lsap_sel = 0 '\0', sir_addr = 26744515,
sir_name = "OBEX", '\0' <repeats 20 times>}, inet = {sin_family = 23, sin_port = 0,
sin_addr = {s_addr = 26744515}, sin_zero = "OBEX\0\0\0"}}}, ctrans = {connect = 0,
disconnect = 0, listen = 0, write = 0, handleinput = 0, userdata = 0x0},
userdata = 0xbffff9f4}
(gdb) bt
#0 0x4004927f in obex_client (self=0x804c988, msg=0x804ca28, final=128) at obex_client.c:67
#1 0x40046ade in obex_data_indication (self=0x804c988, buf=0x3 <Address 0x3 out of bounds>,
buflen=-3) at obex_main.c:323
#2 0x400486ee in obex_transport_handle_input (self=0x804c988, timeout=10)
at obex_transport.c:101
#3 0x40045818 in OBEX_HandleInput (self=0x804c988, timeout=10) at obex.c:344
#4 0x080495f1 in syncwait (handle=0x804c988) at obex_test_client.c:47
#5 0x0804991a in put_client (handle=0x804c988) at obex_test_client.c:200
#6 0x080494da in main (argc=1, argv=0xbffffa74) at obex_test.c:234

Discussion

  • Jakub Pavelek

    Jakub Pavelek - 2002-08-06

    Logged In: YES
    user_id=450412

    Is anybody working on this? We have tried both the CVS and
    the debian/ipkg packages available and all have this issue :-(

     
  • Hendrik Sattler

    Hendrik Sattler - 2010-12-16
    • status: open --> closed-out-of-date
     

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks