diff options
author | Andrei Emeltchenko <andrei.emeltchenko@intel.com> | 2015-02-16 15:02:24 +0200 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2015-02-19 15:21:08 +0200 |
commit | 62a112bd5200c5f538dc1b5a053086faadcfa1dd (patch) | |
tree | 851949856f632ba543161e8a960807067284a571 /unit/test-avdtp.c | |
parent | 65b3246571fc7218c38cba69b4606e3227821859 (diff) | |
download | bluez-62a112bd5200c5f538dc1b5a053086faadcfa1dd.tar.gz |
unit/avdtp: Add duplicate SEID test
Add test adding two SEP, then remove first and create another one. With
the current code new SEP has the same SEID (2!). Following patches
fixing the bug.
Diffstat (limited to 'unit/test-avdtp.c')
-rw-r--r-- | unit/test-avdtp.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/unit/test-avdtp.c b/unit/test-avdtp.c index d20efa5ba..f2ef767e1 100644 --- a/unit/test-avdtp.c +++ b/unit/test-avdtp.c @@ -583,6 +583,46 @@ static void test_server_seid(gconstpointer data) lseps = NULL; } +static void test_server_seid_duplicate(gconstpointer data) +{ + struct context *context = create_context(0x0103, data); + struct avdtp_local_sep *sep; + int i; + + for (i = 0; i < 2; i++) { + sep = avdtp_register_sep(AVDTP_SEP_TYPE_SINK, + AVDTP_MEDIA_TYPE_AUDIO, + 0x00, TRUE, &sep_ind, NULL, + context); + g_assert(sep); + + lseps = g_slist_append(lseps, sep); + } + + /* Remove 1st element */ + sep = g_slist_nth_data(lseps, 0); + lseps = g_slist_remove(lseps, sep); + avdtp_unregister_sep(sep); + + /* Now register new element */ + sep = avdtp_register_sep(AVDTP_SEP_TYPE_SINK, + AVDTP_MEDIA_TYPE_AUDIO, + 0x00, TRUE, &sep_ind, NULL, + context); + g_assert(sep); + lseps = g_slist_append(lseps, sep); + + /* Check SEID ids */ + + g_idle_add(send_pdu, context); + + execute_context(context); + + /* Remove all SEPs */ + g_slist_free_full(lseps, unregister_sep); + lseps = NULL; +} + static gboolean sep_getcap_ind_frg(struct avdtp *session, struct avdtp_local_sep *sep, GSList **caps, uint8_t *err, @@ -772,6 +812,9 @@ int main(int argc, char *argv[]) */ define_test("/TP/SIG/SMG/BV-06-C-SEID-1", test_server_seid, raw_pdu(0x00)); + define_test("/TP/SIG/SMG/BV-06-C-SEID-2", test_server_seid_duplicate, + raw_pdu(0x00, 0x01), + raw_pdu(0x02, 0x01, 0x08, 0x08, 0x04, 0x08)); define_test("/TP/SIG/SMG/BV-05-C", test_client, raw_pdu(0x00, 0x01)); define_test("/TP/SIG/SMG/BV-06-C", test_server, |