diff --git a/0001-Fix-crash-after-pair-command.patch b/0001-Fix-crash-after-pair-command.patch new file mode 100644 index 0000000000000000000000000000000000000000..7c09b0b92e3dfca6e2a33b5aff0c45dc257a7a0c --- /dev/null +++ b/0001-Fix-crash-after-pair-command.patch @@ -0,0 +1,76 @@ +From 60d60166e4bfae8555fb671e5a99952586cc6b56 Mon Sep 17 00:00:00 2001 +From: Vinit Mehta +Date: 2023-12-19 11:58:01 +0530 +Subject: [PATCH] Fix crash after pair command + +After pair command, if the user doesn't provide any input on bluetoothctl +CLI interface after receiving the prompt(yes/no) below crash is observed: + +dbus[782]: arguments to dbus_message_get_no_reply() were incorrect, +assertion "message != NULL" failed in file +/usr/src/debug/dbus/1.14.10-r0/dbus/dbus-message.c line 3250. +This is normally a bug in some application using the D-Bus library. +/usr/lib/libc.so.6(+0x27534) [0xffffa1b67534] +/usr/lib/libc.so.6(__libc_start_main+0x9c) [0xffffa1b6760c] +bluetoothctl(+0x188f0) [0xaaaac9c088f0] +Aborted (core dumped) +--- + client/agent.c | 15 +++++++++------ + client/mgmt.c | 12 +++++++++--- + 2 files changed, 18 insertions(+), 9 deletions(-) + +diff --git a/client/agent.c b/client/agent.c +index 35b4041..ff5e57f 100644 +--- a/client/agent.c ++++ b/client/agent.c +@@ -77,14 +77,17 @@ static void confirm_response(const char *input, void *user_data) + { + DBusConnection *conn = user_data; + +- if (!strcmp(input, "yes")) +- g_dbus_send_reply(conn, pending_message, DBUS_TYPE_INVALID); +- else if (!strcmp(input, "no")) +- g_dbus_send_error(conn, pending_message, ++ if (pending_message != NULL) { ++ if (!strcmp(input, "yes")) ++ g_dbus_send_reply(conn, pending_message, ++ DBUS_TYPE_INVALID); ++ else if (!strcmp(input, "no")) ++ g_dbus_send_error(conn, pending_message, + "org.bluez.Error.Rejected", NULL); +- else +- g_dbus_send_error(conn, pending_message, ++ else ++ g_dbus_send_error(conn, pending_message, + "org.bluez.Error.Canceled", NULL); ++ } + } + + static void agent_release(DBusConnection *conn) +diff --git a/client/mgmt.c b/client/mgmt.c +index 947d8fc..e9ebb3d 100644 +--- a/client/mgmt.c ++++ b/client/mgmt.c +@@ -849,10 +849,16 @@ static void prompt_input(const char *input, void *user_data) + &prompt.addr); + break; + case MGMT_EV_USER_CONFIRM_REQUEST: +- if (input[0] == 'y' || input[0] == 'Y') +- mgmt_confirm_reply(prompt.index, &prompt.addr); +- else ++ if (len) { ++ if (input[0] == 'y' || input[0] == 'Y') ++ mgmt_confirm_reply(prompt.index, &prompt.addr); ++ else ++ mgmt_confirm_neg_reply(prompt.index, ++ &prompt.addr); ++ } else { + mgmt_confirm_neg_reply(prompt.index, &prompt.addr); ++ bt_shell_set_prompt(PROMPT_ON); ++ } + break; + } + } +-- +2.33.0 + diff --git a/bluez.spec b/bluez.spec index 75bf1d82ed7b95dc604b6fbd147e2a9d731d4dbd..5b78ff054a14d69ed3bc4368b5dc780f8437d2be 100644 --- a/bluez.spec +++ b/bluez.spec @@ -1,7 +1,7 @@ Name: bluez Summary: Bluetooth utilities Version: 5.71 -Release: 1 +Release: 2 License: GPLv2+ URL: http://www.bluez.org/ Source0: http://www.kernel.org/pub/linux/bluetooth/bluez-%{version}.tar.xz @@ -17,6 +17,7 @@ Patch6000: backport-bluez-disable-test-mesh-crypto.patch %ifarch sw_64 Patch6013: bluez-5.54-sw.patch %endif +Patch7000: 0001-Fix-crash-after-pair-command.patch BuildRequires: dbus-devel >= 1.6 libell-devel >= 0.28 autoconf BuildRequires: glib2-devel libical-devel readline-devel @@ -174,6 +175,9 @@ make check %{_mandir}/man8/* %changelog +* Sun Apr 28 2024 xuchenchen - 5.71-2 +- mgmt: Fix crash after pair command + * Tue Jan 23 2024 zhangpan - 5.71-1 - update to 5.71