diff options
author | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2013-01-31 11:12:42 -0600 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2013-01-31 14:41:40 -0600 |
commit | 5c62723d58a544231ac3b8252c5068d7f1a14e5c (patch) | |
tree | d9de44a57fa443d478da1ec57326e85fd1a7aea7 /profiles/audio/a2dp.c | |
parent | 6a4f06b68ed0ae8457b0336e4cb28e41f1f68a70 (diff) | |
download | bluez-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.c | 12 |
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; } |