2023-03-15 09:30:58

by Guiting Shen

[permalink] [raw]
Subject: [PATCH] obexd: reject to accept file when replying reject message

It will accept file when obex agent replied any message
event though the message is org.bluez.obex.Error.Rejected.
The patch helps to reject a Bluetooth object push request if
user replied "org.bluez.obex.Error.Rejected" message according
to the doc/obex-agent-api.txt.
---
obexd/src/manager.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/obexd/src/manager.c b/obexd/src/manager.c
index 01741fe62..849928603 100644
--- a/obexd/src/manager.c
+++ b/obexd/src/manager.c
@@ -38,6 +38,7 @@
#define TRANSFER_INTERFACE OBEXD_SERVICE ".Transfer1"
#define SESSION_INTERFACE OBEXD_SERVICE ".Session1"
#define AGENT_INTERFACE OBEXD_SERVICE ".Agent1"
+#define OBEX_ERROR_REJECT "org.bluez.obex.Error.Rejected"

#define TIMEOUT 60*1000 /* Timeout for user response (miliseconds) */

@@ -45,6 +46,7 @@ struct agent {
char *bus_name;
char *path;
gboolean auth_pending;
+ gboolean auth_reject;
char *new_name;
char *new_folder;
unsigned int watch_id;
@@ -631,6 +633,9 @@ static void agent_reply(DBusPendingCall *call, void *user_data)
if (dbus_error_has_name(&derr, DBUS_ERROR_NO_REPLY))
agent_cancel();

+ if (dbus_error_has_name(&derr, OBEX_ERROR_REJECT))
+ agent->auth_reject = TRUE;
+
dbus_error_free(&derr);
dbus_message_unref(reply);
return;
@@ -694,6 +699,7 @@ int manager_request_authorization(struct obex_transfer *transfer,
dbus_message_unref(msg);

agent->auth_pending = TRUE;
+ agent->auth_reject = FALSE;
got_reply = FALSE;

/* Catches errors before authorization response comes */
@@ -716,7 +722,7 @@ int manager_request_authorization(struct obex_transfer *transfer,

dbus_pending_call_unref(call);

- if (!agent || !agent->new_name)
+ if (!agent || !agent->new_name || agent->auth_reject)
return -EPERM;

*new_folder = agent->new_folder;
--
2.11.0



2023-03-15 10:47:00

by bluez.test.bot

[permalink] [raw]
Subject: RE: obexd: reject to accept file when replying reject message

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=730242

---Test result---

Test Summary:
CheckPatch PASS 0.58 seconds
GitLint PASS 0.36 seconds
BuildEll PASS 32.08 seconds
BluezMake PASS 982.20 seconds
MakeCheck PASS 12.92 seconds
MakeDistcheck PASS 182.92 seconds
CheckValgrind PASS 294.99 seconds
CheckSmatch PASS 392.56 seconds
bluezmakeextell PASS 119.40 seconds
IncrementalBuild PASS 803.68 seconds
ScanBuild PASS 1223.38 seconds



---
Regards,
Linux Bluetooth