From 27141a2191054604ebfa70e6d9c790c58da1eed2 Mon Sep 17 00:00:00 2001 From: Claudio Takahasi Date: Tue, 16 Mar 2010 19:57:00 -0300 Subject: [PATCH] obexd: Always assign the service data returned by service connect callback This patch fix the segmentation fault caused by invalid memory access when services access the service data in the disconnect callback. --- obexd/src/obex.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/obexd/src/obex.c b/obexd/src/obex.c index 717b2644f..87d153ff9 100644 --- a/obexd/src/obex.c +++ b/obexd/src/obex.c @@ -215,7 +215,6 @@ static void cmd_connect(struct obex_session *os, const guint8 *target = NULL, *who = NULL; guint target_size = 0, who_size = 0; int err; - gpointer user_data; if (OBEX_ObjectGetNonHdrData(obj, &buffer) != sizeof(*nonhdr)) { OBEX_ObjectSetRsp(obj, OBEX_RSP_FORBIDDEN, OBEX_RSP_FORBIDDEN); @@ -267,7 +266,7 @@ static void cmd_connect(struct obex_session *os, return; } - user_data = os->service->connect(os, &err); + os->service_data = os->service->connect(os, &err); if (err == 0 && os->service->target) { hd.bs = os->service->target; OBEX_ObjectAddHeader(obex, obj, @@ -277,8 +276,6 @@ static void cmd_connect(struct obex_session *os, OBEX_ObjectAddHeader(obex, obj, OBEX_HDR_CONNECTION, hd, 4, OBEX_FL_FIT_ONE_PACKET); - - os->service_data = user_data; } os_set_response(obj, err); -- 2.47.3