Commit [1] introduced a dependency with the HID plugin in the HoG code As a result, building with --enable-hid --disable-hog caused linker errors due to undefined references to HoG-related functions: ``` > ./configure --enable-hid --disable-hog ... > make ... CCLD src/bluetoothd /usr/bin/ld: profiles/input/bluetoothd-manager.o: in function `input_init': /home/../bluez/profiles/input/manager.c:122:(.text.input_init+0x1c8): undefined reference to `input_set_auto_sec' collect2: error: ld returned 1 exit status make[1]: *** [Makefile:6376: src/bluetoothd] Error 1 ``` This patch moves the `input_set_auto_sec` function to `profiles/input/device.c` file so it remains defined even when HoG is disabled. [1] f2778f587 input: Add LEAutoSecurity setting to input.conf --- profiles/input/device.c | 11 +++++++++++ profiles/input/device.h | 1 + profiles/input/hog.c | 8 +------- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/profiles/input/device.c b/profiles/input/device.c index a7bc4d44f..d27cfccee 100644 --- a/profiles/input/device.c +++ b/profiles/input/device.c @@ -92,6 +92,7 @@ struct input_device { static int idle_timeout = 0; static uhid_state_t uhid_state = UHID_ENABLED; static bool classic_bonded_only = true; +static bool auto_sec = true; void input_set_idle_timeout(int timeout) { @@ -127,6 +128,16 @@ bool input_get_classic_bonded_only(void) return classic_bonded_only; } +void input_set_auto_sec(bool state) +{ + auto_sec = state; +} + +bool input_get_auto_sec(void) +{ + return auto_sec; +} + static void input_device_enter_reconnect_mode(struct input_device *idev); static int connection_disconnect(struct input_device *idev, uint32_t flags); diff --git a/profiles/input/device.h b/profiles/input/device.h index 7b87ce590..9d31fdc51 100644 --- a/profiles/input/device.h +++ b/profiles/input/device.h @@ -26,6 +26,7 @@ uint8_t input_get_userspace_hid(void); void input_set_classic_bonded_only(bool state); bool input_get_classic_bonded_only(void); void input_set_auto_sec(bool state); +bool input_get_auto_sec(void); int input_device_register(struct btd_service *service); void input_device_unregister(struct btd_service *service); diff --git a/profiles/input/hog.c b/profiles/input/hog.c index 017e320f0..97224f0d1 100644 --- a/profiles/input/hog.c +++ b/profiles/input/hog.c @@ -54,14 +54,8 @@ struct hog_device { }; static gboolean suspend_supported = FALSE; -static bool auto_sec = true; static struct queue *devices = NULL; -void input_set_auto_sec(bool state) -{ - auto_sec = state; -} - static void hog_device_accept(struct hog_device *dev, struct gatt_db *db) { char name[248]; @@ -187,7 +181,7 @@ static int hog_accept(struct btd_service *service) if (!device_is_bonded(device, btd_device_get_bdaddr_type(device))) { struct bt_gatt_client *client; - if (!auto_sec) + if (!input_get_auto_sec()) return -ECONNREFUSED; client = btd_device_get_gatt_client(device); -- 2.49.0