summaryrefslogtreecommitdiff
path: root/profiles/audio/a2dp.c
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2013-01-31 11:12:42 -0600
committerJohan Hedberg <johan.hedberg@intel.com>2013-01-31 14:41:40 -0600
commit5c62723d58a544231ac3b8252c5068d7f1a14e5c (patch)
treed9de44a57fa443d478da1ec57326e85fd1a7aea7 /profiles/audio/a2dp.c
parent6a4f06b68ed0ae8457b0336e4cb28e41f1f68a70 (diff)
downloadbluez-5c62723d58a544231ac3b8252c5068d7f1a14e5c.tar.gz
A2DP: Fix not setting setup error to NULL
Once the error is informed to the callback it should be properly freed and set to NULL otherwise a subsequent operation may end up reusing the same error which might lead to crashes.
Diffstat (limited to 'profiles/audio/a2dp.c')
-rw-r--r--profiles/audio/a2dp.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/profiles/audio/a2dp.c b/profiles/audio/a2dp.c
index efb4178af..4b284654a 100644
--- a/profiles/audio/a2dp.c
+++ b/profiles/audio/a2dp.c
@@ -366,16 +366,13 @@ static void stream_state_changed(struct avdtp_stream *stream,
static gboolean auto_config(gpointer data)
{
struct a2dp_setup *setup = data;
- struct avdtp_error *err = NULL;
/* Check if configuration was aborted */
if (setup->sep->stream == NULL)
return FALSE;
- if (setup->err != NULL) {
- err = setup->err;
+ if (setup->err != NULL)
goto done;
- }
avdtp_stream_add_cb(setup->session, setup->stream,
stream_state_changed, setup->sep);
@@ -391,8 +388,10 @@ done:
finalize_config(setup);
- if (err)
- g_free(err);
+ if (setup->err) {
+ g_free(setup->err);
+ setup->err = NULL;
+ }
setup_unref(setup);
@@ -565,6 +564,7 @@ static void setconf_cfm(struct avdtp *session, struct avdtp_local_sep *sep,
if (setup) {
setup->err = err;
finalize_config(setup);
+ setup->err = NULL;
}
return;
}