Message ID | 20210729165211.Bluez.v5.1.Ic71b1ed97538a06d02425ba502690bdab1c5d836@changeid (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Admin policy series | expand |
This is automated email and please do not reply to this email! Dear submitter, Thank you for submitting the patches to the linux bluetooth mailing list. This is a CI test results with your patch series: PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=523245 ---Test result--- Test Summary: CheckPatch FAIL 3.45 seconds GitLint PASS 1.27 seconds Prep - Setup ELL PASS 38.90 seconds Build - Prep PASS 0.10 seconds Build - Configure PASS 6.87 seconds Build - Make FAIL 124.74 seconds Make Check FAIL 0.38 seconds Make Distcheck PASS 196.10 seconds Build w/ext ELL - Configure PASS 6.87 seconds Build w/ext ELL - Make FAIL 113.38 seconds Details ############################## Test: CheckPatch - FAIL Desc: Run checkpatch.pl script with rule in .checkpatch.conf Output: mcap: add adapter authorization WARNING:NEW_TYPEDEFS: do not add new typedefs #152: FILE: profiles/health/mcap.h:253: +typedef guint (* mcap_authorize_cb) (const bdaddr_t *src, const bdaddr_t *dst, WARNING:LONG_LINE_COMMENT: line length of 93 exceeds 80 columns #163: FILE: profiles/health/mcap.h:279: + mcap_authorize_cb authorize_cb; /* Method to request authorization */ - total: 0 errors, 2 warnings, 141 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. "[PATCH] mcap: add adapter authorization" has style problems, please review. NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS. core: add device_added and device_removed to adapter driver WARNING:SPACING: Unnecessary space before function pointer arguments #130: FILE: src/adapter.h:114: + void (*device_added) (struct btd_adapter *adapter, WARNING:SPACING: Unnecessary space before function pointer arguments #132: FILE: src/adapter.h:116: + void (*device_removed) (struct btd_adapter *adapter, - total: 0 errors, 2 warnings, 112 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. "[PATCH] core: add device_added and device_removed to adapter driver" has style problems, please review. NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS. plugins/admin: add ServiceAllowList property ERROR:SPACING: need consistent spacing around '*' (ctx:WxV) #63: FILE: plugins/admin.c:186: + const GDBusPropertyTable *property, ^ - total: 1 errors, 0 warnings, 82 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. "[PATCH] plugins/admin: add ServiceAllowList property" has style problems, please review. NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS. plugins/admin: add AffectedByPolicy property ERROR:SPACING: need consistent spacing around '*' (ctx:WxV) #65: FILE: plugins/admin.c:254: + const GDBusPropertyTable *property, ^ - total: 1 errors, 0 warnings, 120 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. "[PATCH] plugins/admin: add AffectedByPolicy property" has style problems, please review. NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS. plugins/admin: persist policy settings WARNING:LINE_SPACING: Missing a blank line after declarations #164: FILE: plugins/admin.c:340: + struct queue *uuid_list = NULL; + gchar **uuids = NULL; - total: 0 errors, 1 warnings, 216 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. "[PATCH] plugins/admin: persist policy settings" has style problems, please review. NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS. ############################## Test: GitLint - PASS Desc: Run gitlint with rule in .gitlint ############################## Test: Prep - Setup ELL - PASS Desc: Clone, build, and install ELL ############################## Test: Build - Prep - PASS Desc: Prepare environment for build ############################## Test: Build - Configure - PASS Desc: Configure the BlueZ source tree ############################## Test: Build - Make - FAIL Desc: Build the BlueZ source tree Output: plugins/admin.c: In function ‘store_policy_settings’: plugins/admin.c:321:26: error: ‘errno’ undeclared (first use in this function) 321 | filename, strerror(errno)); | ^~~~~ plugins/admin.c:33:1: note: ‘errno’ is defined in header ‘<errno.h>’; did you forget to ‘#include <errno.h>’? 32 | #include "src/shared/queue.h" +++ |+#include <errno.h> 33 | plugins/admin.c:321:26: note: each undeclared identifier is reported only once for each function it appears in 321 | filename, strerror(errno)); | ^~~~~ plugins/admin.c: In function ‘admin_policy_adapter_probe’: plugins/admin.c:470:11: error: ‘ENOMEM’ undeclared (first use in this function) 470 | return -ENOMEM; | ^~~~~~ plugins/admin.c:482:11: error: ‘EINVAL’ undeclared (first use in this function) 482 | return -EINVAL; | ^~~~~~ make[1]: *** [Makefile:8449: plugins/bluetoothd-admin.o] Error 1 make: *** [Makefile:4147: all] Error 2 ############################## Test: Make Check - FAIL Desc: Run 'make check' Output: plugins/admin.c: In function ‘store_policy_settings’: plugins/admin.c:321:26: error: ‘errno’ undeclared (first use in this function) 321 | filename, strerror(errno)); | ^~~~~ plugins/admin.c:33:1: note: ‘errno’ is defined in header ‘<errno.h>’; did you forget to ‘#include <errno.h>’? 32 | #include "src/shared/queue.h" +++ |+#include <errno.h> 33 | plugins/admin.c:321:26: note: each undeclared identifier is reported only once for each function it appears in 321 | filename, strerror(errno)); | ^~~~~ plugins/admin.c: In function ‘admin_policy_adapter_probe’: plugins/admin.c:470:11: error: ‘ENOMEM’ undeclared (first use in this function) 470 | return -ENOMEM; | ^~~~~~ plugins/admin.c:482:11: error: ‘EINVAL’ undeclared (first use in this function) 482 | return -EINVAL; | ^~~~~~ make[1]: *** [Makefile:8449: plugins/bluetoothd-admin.o] Error 1 make: *** [Makefile:10436: check] Error 2 ############################## Test: Make Distcheck - PASS Desc: Run distcheck to check the distribution ############################## Test: Build w/ext ELL - Configure - PASS Desc: Configure BlueZ source with '--enable-external-ell' configuration ############################## Test: Build w/ext ELL - Make - FAIL Desc: Build BlueZ source with '--enable-external-ell' configuration Output: plugins/admin.c: In function ‘store_policy_settings’: plugins/admin.c:321:26: error: ‘errno’ undeclared (first use in this function) 321 | filename, strerror(errno)); | ^~~~~ plugins/admin.c:33:1: note: ‘errno’ is defined in header ‘<errno.h>’; did you forget to ‘#include <errno.h>’? 32 | #include "src/shared/queue.h" +++ |+#include <errno.h> 33 | plugins/admin.c:321:26: note: each undeclared identifier is reported only once for each function it appears in 321 | filename, strerror(errno)); | ^~~~~ plugins/admin.c: In function ‘admin_policy_adapter_probe’: plugins/admin.c:470:11: error: ‘ENOMEM’ undeclared (first use in this function) 470 | return -ENOMEM; | ^~~~~~ plugins/admin.c:482:11: error: ‘EINVAL’ undeclared (first use in this function) 482 | return -EINVAL; | ^~~~~~ make[1]: *** [Makefile:8449: plugins/bluetoothd-admin.o] Error 1 make: *** [Makefile:4147: all] Error 2 --- Regards, Linux Bluetooth
diff --git a/src/service.c b/src/service.c index 21a52762e637..929d6c136b6d 100644 --- a/src/service.c +++ b/src/service.c @@ -41,6 +41,7 @@ struct btd_service { void *user_data; btd_service_state_t state; int err; + bool is_allowed; }; struct service_state_callback { @@ -133,6 +134,7 @@ struct btd_service *service_create(struct btd_device *device, service->device = device; /* Weak ref */ service->profile = profile; service->state = BTD_SERVICE_STATE_UNAVAILABLE; + service->is_allowed = true; return service; } @@ -186,6 +188,18 @@ int service_accept(struct btd_service *service) if (!service->profile->accept) return -ENOSYS; + if (!service->is_allowed) { + info("service %s is not allowed", + service->profile->remote_uuid); + return -ECONNABORTED; + } + + if (!service->is_allowed) { + info("service %s is not allowed", + service->profile->remote_uuid); + return -ECONNABORTED; + } + err = service->profile->accept(service); if (!err) goto done; @@ -245,6 +259,12 @@ int btd_service_connect(struct btd_service *service) return -EBUSY; } + if (!service->is_allowed) { + info("service %s is not allowed", + service->profile->remote_uuid); + return -ECONNABORTED; + } + err = profile->connect(service); if (err == 0) { change_state(service, BTD_SERVICE_STATE_CONNECTING, 0); @@ -361,6 +381,25 @@ bool btd_service_remove_state_cb(unsigned int id) return false; } +void btd_service_set_allowed(struct btd_service *service, bool allowed) +{ + if (allowed == service->is_allowed) + return; + + service->is_allowed = allowed; + + if (!allowed && (service->state == BTD_SERVICE_STATE_CONNECTING || + service->state == BTD_SERVICE_STATE_CONNECTED)) { + btd_service_disconnect(service); + return; + } +} + +bool btd_service_is_allowed(struct btd_service *service) +{ + return service->is_allowed; +} + void btd_service_connecting_complete(struct btd_service *service, int err) { if (service->state != BTD_SERVICE_STATE_DISCONNECTED && diff --git a/src/service.h b/src/service.h index 88530cc17d53..5a2a02447b24 100644 --- a/src/service.h +++ b/src/service.h @@ -51,6 +51,8 @@ int btd_service_get_error(const struct btd_service *service); unsigned int btd_service_add_state_cb(btd_service_state_cb cb, void *user_data); bool btd_service_remove_state_cb(unsigned int id); +void btd_service_set_allowed(struct btd_service *service, bool allowed); +bool btd_service_is_allowed(struct btd_service *service); /* Functions used by profile implementation */ void btd_service_connecting_complete(struct btd_service *service, int err);