Message ID | 20210729110956.Bluez.v4.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=523089 ---Test result--- Test Summary: CheckPatch FAIL 4.21 seconds GitLint PASS 1.59 seconds Prep - Setup ELL PASS 47.01 seconds Build - Prep PASS 0.11 seconds Build - Configure PASS 8.40 seconds Build - Make FAIL 152.72 seconds Make Check FAIL 0.52 seconds Make Distcheck PASS 242.04 seconds Build w/ext ELL - Configure PASS 8.44 seconds Build w/ext ELL - Make FAIL 140.34 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, 121 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 #151: FILE: plugins/admin.c:336: + struct queue *uuid_list = NULL; + gchar **uuids = NULL; - total: 0 errors, 1 warnings, 204 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:211:6: error: no previous declaration for ‘append_service_uuid’ [-Werror=missing-declarations] 211 | void append_service_uuid(void *data, void *user_data) | ^~~~~~~~~~~~~~~~~~~ plugins/admin.c: In function ‘free_uuid_strings’: plugins/admin.c:252:16: error: comparison of integer expressions of different signedness: ‘gsize’ {aka ‘long unsigned int’} and ‘int’ [-Werror=sign-compare] 252 | for (i = 0; i < num; i++) | ^ plugins/admin.c: In function ‘store_policy_settings’: plugins/admin.c:317:26: error: ‘errno’ undeclared (first use in this function) 317 | filename, strerror(errno)); | ^~~~~ plugins/admin.c:32:1: note: ‘errno’ is defined in header ‘<errno.h>’; did you forget to ‘#include <errno.h>’? 31 | #include "src/shared/queue.h" +++ |+#include <errno.h> 32 | plugins/admin.c:317:26: note: each undeclared identifier is reported only once for each function it appears in 317 | filename, strerror(errno)); | ^~~~~ plugins/admin.c: In function ‘property_get_affected_by_policy’: plugins/admin.c:418:14: error: unused variable ‘affected’ [-Werror=unused-variable] 418 | dbus_bool_t affected; | ^~~~~~~~ plugins/admin.c: In function ‘admin_policy_adapter_probe’: plugins/admin.c:467:11: error: ‘ENOMEM’ undeclared (first use in this function) 467 | return -ENOMEM; | ^~~~~~ plugins/admin.c:479:11: error: ‘EINVAL’ undeclared (first use in this function) 479 | return -EINVAL; | ^~~~~~ cc1: all warnings being treated as errors 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:211:6: error: no previous declaration for ‘append_service_uuid’ [-Werror=missing-declarations] 211 | void append_service_uuid(void *data, void *user_data) | ^~~~~~~~~~~~~~~~~~~ plugins/admin.c: In function ‘free_uuid_strings’: plugins/admin.c:252:16: error: comparison of integer expressions of different signedness: ‘gsize’ {aka ‘long unsigned int’} and ‘int’ [-Werror=sign-compare] 252 | for (i = 0; i < num; i++) | ^ plugins/admin.c: In function ‘store_policy_settings’: plugins/admin.c:317:26: error: ‘errno’ undeclared (first use in this function) 317 | filename, strerror(errno)); | ^~~~~ plugins/admin.c:32:1: note: ‘errno’ is defined in header ‘<errno.h>’; did you forget to ‘#include <errno.h>’? 31 | #include "src/shared/queue.h" +++ |+#include <errno.h> 32 | plugins/admin.c:317:26: note: each undeclared identifier is reported only once for each function it appears in 317 | filename, strerror(errno)); | ^~~~~ plugins/admin.c: In function ‘property_get_affected_by_policy’: plugins/admin.c:418:14: error: unused variable ‘affected’ [-Werror=unused-variable] 418 | dbus_bool_t affected; | ^~~~~~~~ plugins/admin.c: In function ‘admin_policy_adapter_probe’: plugins/admin.c:467:11: error: ‘ENOMEM’ undeclared (first use in this function) 467 | return -ENOMEM; | ^~~~~~ plugins/admin.c:479:11: error: ‘EINVAL’ undeclared (first use in this function) 479 | return -EINVAL; | ^~~~~~ cc1: all warnings being treated as errors 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:211:6: error: no previous declaration for ‘append_service_uuid’ [-Werror=missing-declarations] 211 | void append_service_uuid(void *data, void *user_data) | ^~~~~~~~~~~~~~~~~~~ plugins/admin.c: In function ‘free_uuid_strings’: plugins/admin.c:252:16: error: comparison of integer expressions of different signedness: ‘gsize’ {aka ‘long unsigned int’} and ‘int’ [-Werror=sign-compare] 252 | for (i = 0; i < num; i++) | ^ plugins/admin.c: In function ‘store_policy_settings’: plugins/admin.c:317:26: error: ‘errno’ undeclared (first use in this function) 317 | filename, strerror(errno)); | ^~~~~ plugins/admin.c:32:1: note: ‘errno’ is defined in header ‘<errno.h>’; did you forget to ‘#include <errno.h>’? 31 | #include "src/shared/queue.h" +++ |+#include <errno.h> 32 | plugins/admin.c:317:26: note: each undeclared identifier is reported only once for each function it appears in 317 | filename, strerror(errno)); | ^~~~~ plugins/admin.c: In function ‘property_get_affected_by_policy’: plugins/admin.c:418:14: error: unused variable ‘affected’ [-Werror=unused-variable] 418 | dbus_bool_t affected; | ^~~~~~~~ plugins/admin.c: In function ‘admin_policy_adapter_probe’: plugins/admin.c:467:11: error: ‘ENOMEM’ undeclared (first use in this function) 467 | return -ENOMEM; | ^~~~~~ plugins/admin.c:479:11: error: ‘EINVAL’ undeclared (first use in this function) 479 | return -EINVAL; | ^~~~~~ cc1: all warnings being treated as errors 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);