From 88a72d54ff1a30d18697dc89b075ea0c412007ca Mon Sep 17 00:00:00 2001 From: Bartosz Szatkowski Date: Wed, 13 Jul 2011 22:10:10 +0000 Subject: [PATCH] obexd: Fix freeing buffer before transfer is complete phonebook_req_finalize is called before actual transport taking place, so buffers kept in user_data may cause invalid reads in valgrind and prevent transport being completed. --- obexd/plugins/phonebook-ebook.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/obexd/plugins/phonebook-ebook.c b/obexd/plugins/phonebook-ebook.c index 06ae1ec1e..4a14eca12 100644 --- a/obexd/plugins/phonebook-ebook.c +++ b/obexd/plugins/phonebook-ebook.c @@ -208,9 +208,15 @@ done: DBG("collected %d vcards", count); data->queued_calls--; - if (data->queued_calls == 0) - data->contacts_cb(data->buf->str, data->buf->len, data->count, + if (data->queued_calls == 0) { + GString *buf = data->buf; + data->buf = NULL; + + data->contacts_cb(buf->str, buf->len, data->count, 0, TRUE, data->user_data); + + g_string_free(buf, TRUE); + } } static void ebook_entry_cb(EBook *book, const GError *gerr, -- 2.47.3