obexd: Use transfer owner instead of agent

The security checks in the transfers' D-Bus API will consider check for
the transfer owner's path (session owner) instead of the agent path.
This commit is contained in:
Mikel Astiz 2012-05-30 17:50:16 +02:00 committed by Marcel Holtmann
parent ce7b4cbd4c
commit 5119ebcc35
3 changed files with 8 additions and 13 deletions

View File

@ -793,7 +793,6 @@ guint obc_session_queue(struct obc_session *session,
GError **err)
{
struct pending_request *p;
const char *agent;
int perr;
if (session->obex == NULL) {
@ -803,12 +802,8 @@ guint obc_session_queue(struct obc_session *session,
return 0;
}
if (session->agent)
agent = obc_agent_get_name(session->agent);
else
agent = NULL;
if (!obc_transfer_register(transfer, session->conn, agent, err)) {
if (!obc_transfer_register(transfer, session->conn, session->owner,
err)) {
obc_transfer_unregister(transfer);
return 0;
}

View File

@ -66,7 +66,7 @@ struct obc_transfer {
struct transfer_callback *callback;
DBusConnection *conn;
DBusMessage *msg;
char *agent; /* Transfer agent */
char *owner; /* Transfer initiator */
char *path; /* Transfer path */
gchar *filename; /* Transfer file location */
char *name; /* Transfer object name */
@ -169,7 +169,7 @@ static DBusMessage *obc_transfer_cancel(DBusConnection *connection,
const gchar *sender;
sender = dbus_message_get_sender(message);
if (g_strcmp0(transfer->agent, sender) != 0)
if (g_strcmp0(transfer->owner, sender) != 0)
return g_dbus_create_error(message,
"org.openobex.Error.NotAuthorized",
"Not Authorized");
@ -236,7 +236,7 @@ static void obc_transfer_free(struct obc_transfer *transfer)
g_obex_unref(transfer->obex);
g_free(transfer->callback);
g_free(transfer->agent);
g_free(transfer->owner);
g_free(transfer->filename);
g_free(transfer->name);
g_free(transfer->type);
@ -262,7 +262,7 @@ static struct obc_transfer *obc_transfer_create(guint8 op,
gboolean obc_transfer_register(struct obc_transfer *transfer,
DBusConnection *conn,
const char *agent,
const char *owner,
GError **err)
{
/* for OBEX specific mime types we don't need to register a transfer */
@ -271,7 +271,7 @@ gboolean obc_transfer_register(struct obc_transfer *transfer,
strncmp(transfer->type, "x-bt/", 5) == 0))
goto done;
transfer->agent = g_strdup(agent);
transfer->owner = g_strdup(owner);
transfer->path = g_strdup_printf("%s/transfer%ju",
TRANSFER_BASEPATH, counter++);

View File

@ -36,7 +36,7 @@ struct obc_transfer *obc_transfer_put(const char *type, const char *name,
gboolean obc_transfer_register(struct obc_transfer *transfer,
DBusConnection *conn,
const char *agent,
const char *owner,
GError **err);
void obc_transfer_unregister(struct obc_transfer *transfer);