Commit Graph

375 Commits

Author SHA1 Message Date
Christian Fetzer
363e55779d obexd: Remove transferred file only if the GET operation failed
Since 9606375649 xfer_complete() sets the
transfer status rather than the size. Adapt obc_transfer_free to check
for the completed status to avoid deletion of completed transfers.
2013-01-14 17:42:06 +02:00
Christian Fetzer
86de586204 obexd: Change behavior of parse_filter_read
Calls to ListMessages with filter 'Read' set to true should
request the MSE to send read messages only.

The old code requests the MSE to send unread messages only.
This behavior is not matching the other filters.
2013-01-14 17:42:05 +02:00
Christian Fetzer
d0b4698c8f obexd: Use defines for values in parse_filter_read parse_filter_priority 2013-01-14 17:42:05 +02:00
Christian Fetzer
499d0a4eaf obexd: Fix segfault in parse_filter_read and parse_filter_priority
Calls to ListMessages with filter 'Read' or 'Priority' caused a segfault
in parse_filter_read / parse_filter_priority. The functions read
D-Bus boolean values (uint32) into uint8.

0  0x00007ffff730332d in ?? () from /usr/lib/libdbus-1.so.3
1  0x00007ffff7304219 in dbus_message_iter_next () from /usr/lib/libdbus-1.so.3
2  0x000000000043ef0f in parse_message_filters (
    apparam=<error reading variable: Cannot access memory at address 0x7ffffeffff08>,
    iter=<error reading variable: Cannot access memory at address 0x7ffffeffff00>)
    at obexd/client/map.c:1246
2013-01-14 17:42:05 +02:00
Christian Fetzer
90322684e0 obexd: Fix FILTER_ALL in MAP client to set 16 bit
The MAP specification defines ParameterMask as a bitmask of 32 bit / 4 bytes.
For the lower 16 bit the specification defines parameters, the higher 16 bit
remain reserved for future use. Therefore FILTER_ALL is set to 0x0000FFFF.
(Reserved bits have to be set to 0)

In addition this fixes the issue that ListFilterFields didn't show all fields.
2013-01-14 17:42:04 +02:00
Christian Fetzer
a1d1ea32df obexd: Fix infinite loop in ListMessages with filter "Types"
Calls to ListMessages with filter 'Types' make obexd hang in an infinite loop.
This is caused by a missing dbus_message_iter_next in parse_filter_type.

0  0x00007ffff7304ca7 in dbus_message_iter_get_basic ()
   from /usr/lib/libdbus-1.so.3
1  0x0000000000434fba in parse_filter_type (iter=0x7fffffffd7d0, apparam=
    0x6987f0) at obexd/client/map.c:1086
2  parse_message_filters (iter=0x7fffffffd730, apparam=0x6987f0)
    at obexd/client/map.c:1222
3  map_list_messages (connection=<optimized out>, message=0x669ae0, user_data=
    0x698a60) at obexd/client/map.c:1273
4  0x00000000004109a1 in process_message (connection=0x662b20,
    message=<optimized out>, iface_user_data=<optimized out>,
    method=<optimized out>, method=<optimized out>) at gdbus/object.c:285
5  0x00007ffff7308e15 in ?? () from /usr/lib/libdbus-1.so.3
6  0x00007ffff72fb070 in dbus_connection_dispatch ()
   from /usr/lib/libdbus-1.so.3
7  0x000000000040e3d8 in message_dispatch (data=0x662b20)
    at gdbus/mainloop.c:76
8  0x00007ffff703d3cb in ?? () from /usr/lib/libglib-2.0.so.0
9  0x00007ffff703c845 in g_main_context_dispatch ()
   from /usr/lib/libglib-2.0.so.0
10 0x00007ffff703cb78 in ?? () from /usr/lib/libglib-2.0.so.0
11 0x00007ffff703cf72 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
12 0x000000000040df82 in main (argc=1, argv=0x7fffffffdd88)
    at obexd/src/main.c:323
2013-01-14 17:42:04 +02:00
Christian Fetzer
0b6a5b5068 obexd: Add property exist functions to map client
This fixes crashes in MAP client when the server does not send optional properties.

0  0x00007ffff6a792c5 in raise () from /usr/lib/libc.so.6
1  0x00007ffff6a7a748 in abort () from /usr/lib/libc.so.6
2  0x00007ffff731c145 in ?? () from /usr/lib/libdbus-1.so.3
3  0x00007ffff7312a25 in ?? () from /usr/lib/libdbus-1.so.3
4  0x00007ffff73050d6 in dbus_message_iter_append_basic () from /usr/lib/libdbus-1.so.3
5  0x0000000000433cc5 in get_replyto (property=<optimized out>, iter=<optimized out>,
    data=<optimized out>) at obexd/client/map.c:484
6  0x00000000004103b6 in append_property (p=p@entry=0x6594c0 <map_msg_properties+192>,
    dict=dict@entry=0x7fffffffd8e0, iface=0x6a3720) at gdbus/object.c:547
7  0x0000000000410472 in append_properties (data=data@entry=0x6a3720, iter=iter@entry=
    0x7fffffffd960) at gdbus/object.c:576
8  0x00000000004104d1 in append_interface (data=0x6a3720, user_data=0x7fffffffda40)
    at gdbus/object.c:591
9  0x00007ffff7058a4d in g_slist_foreach () from /usr/lib/libglib-2.0.so.0
10 0x0000000000411d05 in emit_interfaces_added (data=0x6a2ff0) at gdbus/object.c:623
11 process_changes (user_data=0x6a2ff0) at gdbus/object.c:1006
12 0x00007ffff703c845 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
13 0x00007ffff703cb78 in ?? () from /usr/lib/libglib-2.0.so.0
14 0x00007ffff703cf72 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
15 0x000000000040df82 in main (argc=1, argv=0x7fffffffdd88) at obexd/src/main.c:323
2013-01-14 17:42:04 +02:00
Christian Fetzer
5e358f18b1 obexd: Handle empty path name in SetPath
If the empty path is given, an empty name should be sent via OBEX.
Currently the name field is not set at all and later checks which
depend on data->index will access invalid memory regions as g_strsplit
returns NULL when an empty string is given.

0  0x000000000041a181 in g_obex_setpath (obex=obex@entry=0x662eb0, path=
    0x20 <Address 0x20 out of bounds>, func=func@entry=0x42d300 <setpath_cb>,
    user_data=user_data@entry=0x668f10, err=err@entry=0x7fffffffda08)
    at gobex/gobex.c:1397
1  0x000000000042d395 in setpath_cb (obex=0x662eb0, err=0x0, rsp=<optimized out>,
    user_data=0x668f10) at obexd/client/session.c:902
2  0x0000000000418e54 in handle_response (obex=obex@entry=0x662eb0, err=err@entry=0x0,
    rsp=rsp@entry=0x668f40) at gobex/gobex.c:948
3  0x0000000000419d7a in incoming_data (io=<optimized out>, cond=<optimized out>,
    user_data=0x662eb0) at gobex/gobex.c:1191
4  0x00007ffff703c845 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
5  0x00007ffff703cb78 in ?? () from /usr/lib/libglib-2.0.so.0
6  0x00007ffff703cf72 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
7  0x000000000040def2 in main (argc=1, argv=0x7fffffffdd88) at obexd/src/main.c:323
2013-01-14 17:42:03 +02:00
Marcel Holtmann
c59ae99e67 obexd: Remove the total silly usage of gchar and replace it with char 2013-01-04 12:27:55 -08:00
Marcin Zawiejski
6a8cb20ef5 obexd: Fix crash while removing session
Crash occurs when removing a session with RemoveSession while another
session has been created but not yet registered.

Backtrace:
0  __strcmp_ssse3 () at ../sysdeps/i386/i686/multiarch/strcmp-ssse3.S:233
1  0xb758e7c3 in g_str_equal () from /lib/i386-linux-gnu/libglib-2.0.so.0
2  0x08073e56 in find_session (path=0x85c8504 "/org/bluez/obex/session0") at obexd/client/manager.c:146
3  remove_session (connection=0x85bc5e0, message=0x85bca98, user_data=0x0) at obexd/client/manager.c:216
4  0x08055f6f in process_message (connection=0x85bc5e0, message=<optimized out>, iface_user_data=0x0,
    method=<optimized out>, method=<optimized out>) at gdbus/object.c:285
5  0xb7672666 in ?? () from /lib/i386-linux-gnu/libdbus-1.so.3
6  0xb76624d7 in dbus_connection_dispatch () from /lib/i386-linux-gnu/libdbus-1.so.3
7  0x080532f8 in message_dispatch (data=0x85bc5e0) at gdbus/mainloop.c:76
8  0xb759f6bf in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
9  0xb759e9e3 in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0
10 0xb759ed80 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
11 0xb759f1db in g_main_loop_run () from /lib/i386-linux-gnu/libglib-2.0.so.0
12 0x08052d74 in main (argc=1, argv=0xbfb344e4) at obexd/src/main.c:323
2013-01-02 16:13:13 +02:00
Marcel Holtmann
651090b3e5 obexd: The function g_dbus_pending_property_error has no return value 2012-12-29 21:24:26 -08:00
Johan Hedberg
4794363f19 obexd: Update string enumeration values to lower case 2012-12-22 18:30:05 +02:00
Marcel Holtmann
c72af721b9 obexd: Add a few more debug statements 2012-12-21 18:56:50 +01:00
Luiz Augusto von Dentz
405afea4a5 obexd: Add Session property to Transfer interface
This property indicates the session object path.
2012-12-21 17:06:10 +02:00
Luiz Augusto von Dentz
432dffc3d2 obexd: Remove unused code
obc_transfer_append_dbus_properties as the code now uses
g_dbus_get_properties to append transfer properties.
2012-12-21 17:06:10 +02:00
Luiz Augusto von Dentz
da068075ce obexd: Rename Progress property to Transferred 2012-12-21 14:53:42 +02:00
Luiz Augusto von Dentz
793f73091a obexd: Use term active instead of in-progress for transfer status 2012-12-21 12:47:06 +02:00
Luiz Augusto von Dentz
9606375649 obex-client: Rename org.bluez.obex.Transfer to Transfer1
Rename the interface and move it to obexd-api.txt since it now belongs
to the same daemon, in addition remove obex-client-api.txt and align with
Transfer1 API in use by the server.
2012-12-21 12:04:10 +02:00
Luiz Augusto von Dentz
57a12b2571 obex-client: Rename org.bluez.obex.MessageAccess to MessageAccess1
Rename the interface and move it to obexd-api.txt since it now belongs
to the same daemon, in addition do the same to org.bluez.obex.Message.
2012-12-21 12:04:09 +02:00
Luiz Augusto von Dentz
939cebb9f3 obex-client: Rename org.bluez.obex.Synchronization to Synchronization1
Rename the interface and move it to obexd-api.txt since it now belongs
to the same daemon.
2012-12-21 12:01:07 +02:00
Luiz Augusto von Dentz
fc09df3af5 obex-client: Rename org.bluez.obex.PhonebookAccess to PhonebookAccess1
Rename the interface and move it to obexd-api.txt since it now belongs
to the same daemon.
2012-12-21 11:59:41 +02:00
Luiz Augusto von Dentz
2dcb0e5616 obex-client: Rename org.bluez.obex.FileTransfer to org.bluez.obex.FileTransfer1
Rename the interface and move it to obexd-api.txt since it now belongs
to the same daemon.
2012-12-21 11:59:41 +02:00
Luiz Augusto von Dentz
1945cffc16 obex-client: Rename org.bluez.obex.ObjectPush to org.bluez.obex.ObjectPush1
Rename the interface and move it to obexd-api.txt since it now belongs
to the same daemon.
2012-12-21 11:59:41 +02:00
Luiz Augusto von Dentz
dc30b0deaa obex-client: Rename org.bluez.obex.Session to org.bluez.obex.Session1
Rename the interface and move it to obexd-api.txt since it now belongs
to the same daemon.
2012-12-21 11:59:41 +02:00
Luiz Augusto von Dentz
35990b8bdd obexd: Rename org.bluez.obex.Client to org.bluez.obex.Client1
Rename the interface and move it to obexd-api.txt since it now belongs
to the same daemon.
2012-12-21 11:59:41 +02:00
Johan Hedberg
8b1c207d0f obexd: Remove unused D-Bus helper functions 2012-12-19 10:29:18 +02:00
Marcel Holtmann
cc6cd08ee0 obexd: Use /org/bluez/obex as root path 2012-12-18 21:22:07 +01:00
Marcel Holtmann
459001327e obexd: Use a single bus name for obexd and obex-client 2012-12-18 21:19:18 +01:00
Johan Hedberg
91c50f7fa1 obexd: Merge obex-client into obexd daemon 2012-12-18 17:54:43 +02:00
Johan Hedberg
6934437fc7 obexd: Add client prefix to client manager functions
This is in preparation of merging the client into the daemon.
2012-12-18 16:03:42 +02:00
Luiz Augusto von Dentz
3eadc034c9 obex-client: Make use of g_dbus_get_properties to get transfer properties
In addition fix the reply generated by obc_transfer_create_dbus_reply to
not use a structure container instead use object, dict 'oa{sv}' as
indicated in the documentation.
2012-12-17 16:31:59 +02:00
Luiz Augusto von Dentz
27635e590b obex-client: Enable ObjectManager 2012-12-17 14:10:36 +02:00
Luiz Augusto von Dentz
e4f45a247b obex-client: Port transfer code to use D-Bus properties interface 2012-12-16 13:26:02 +02:00
Luiz Augusto von Dentz
6f5797da8b obex-client: Port session code to use D-Bus properties interface 2012-12-16 13:26:00 +02:00
Luiz Augusto von Dentz
82a76393fe obex-client: Port MAP module to use D-Bus properties interface 2012-12-16 13:25:57 +02:00
Luiz Augusto von Dentz
326376321f obex-client: Remove calls to org.bluez.Manager and org.bluez.Adapter
With BlueZ 5 this API no longer exist or have changed.
2012-12-12 14:20:12 +02:00
Johan Hedberg
b8779d2202 Revert "Ensure config.h is included by using CPPFLAGS"
This reverts commit 8a03376544.

The patch needs to be split up and the gdbus/ changes were bogus
compared to the original commit message.

Conflicts:
	Makefile.am
	Makefile.obexd
	profiles/cyclingspeed/cyclingspeed.c
	profiles/heartrate/heartrate.c
	src/error.c
2012-12-07 12:46:04 +02:00
Lucas De Marchi
0375042892 Use entire include path for gobex.h 2012-12-05 17:23:04 +02:00
Lucas De Marchi
49b5612042 Use the entire include path for btio.h 2012-12-05 17:23:04 +02:00
Lucas De Marchi
aa77b0bea9 Use the entire include path for gdbus.h 2012-12-05 17:23:03 +02:00
Lucas De Marchi
8a03376544 Ensure config.h is included by using CPPFLAGS
Instead of trying to include config.h in each file over the tree and
possibly forgetting to include it, give a "-include config.h" argument
to the compiler so it's guaranteed that a) it will be included for all
source files and b) it will be the first header included.

gdbus/ directory is left out, since it would break other projects using
it.
2012-12-05 17:18:07 +02:00
Luiz Augusto von Dentz
cdfaf26ea9 obexd: Fix using BtIOType 2012-12-04 22:49:06 +01:00
Luiz Augusto von Dentz
f3eeb2c93f obexd: Fix sending absolute path
As per OBEX spec the NAME header should not contain absolute paths
2012-12-04 22:49:06 +01:00
Luiz Augusto von Dentz
1f4a67568c obexd: Fix returning empty if messages was already listed
Once a message was already listed and inserted on the cache it could
not be listed again as the code was using the wrong key to lookup for
found messages then once we try to create the message again it fails
as the object already exists.
2012-12-04 22:49:06 +01:00
Luiz Augusto von Dentz
33b0aeda71 obexd: Fix freeing apparam data on PBAP module
Invalid read of size 8
   at 0x40EC04: g_obex_apparam_free (gobex-apparam.c:362)
   by 0x41A66A: obc_transfer_free (transfer.c:272)
   by 0x413221: pending_request_free (session.c:163)
   by 0x413659: session_terminate_transfer (session.c:745)
   by 0x41A53E: xfer_complete (transfer.c:518)
   by 0x41B5D7: get_xfer_progress_first (transfer.c:562)
   by 0x409750: handle_response (gobex.c:948)
   by 0x40A609: incoming_data (gobex.c:1191)
   by 0x371D047824: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.3200.4)
   by 0x371D047B57: ??? (in /usr/lib64/libglib-2.0.so.0.3200.4)
   by 0x371D047F51: g_main_loop_run (in /usr/lib64/libglib-2.0.so.0.3200.4)
   by 0x40542F: main (main.c:175)
 Address 0x4f64510 is 0 bytes inside a block of size 8 free'd
   at 0x4A079AE: free (vg_replace_malloc.c:427)
   by 0x371D04D50E: g_free (in /usr/lib64/libglib-2.0.so.0.3200.4)
   by 0x416060: phonebook_size_callback (pbap.c:266)
   by 0x413651: session_terminate_transfer (session.c:743)
   by 0x41A53E: xfer_complete (transfer.c:518)
   by 0x41B5D7: get_xfer_progress_first (transfer.c:562)
   by 0x409750: handle_response (gobex.c:948)
   by 0x40A609: incoming_data (gobex.c:1191)
   by 0x371D047824: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.3200.4)
   by 0x371D047B57: ??? (in /usr/lib64/libglib-2.0.so.0.3200.4)
   by 0x371D047F51: g_main_loop_run (in /usr/lib64/libglib-2.0.so.0.3200.4)
   by 0x40542F: main (main.c:175)
2012-12-04 22:49:06 +01:00
Luiz Augusto von Dentz
f1e88405c0 obexd: Fix not using port when it is set by the client
If the client set a channel/port the code would just ignore and attempt
to discover the service anyway.
2012-12-04 22:49:06 +01:00
Srinivasa Ragavan
d77a640090 obexd: Add implementation for UpdateInbox 2012-12-04 22:49:06 +01:00
Srinivasa Ragavan
920bbb3663 obexd: Add Message.SetProperty and Message.GetProperties implementation. 2012-12-04 22:49:05 +01:00
Srinivasa Ragavan
3ab485ec08 obexd: Update the file offset to the beginning after writing to the file
When the transfer file is opened in O_RDWR mode, just after the contents are
written to the file, the file offset has to be set to the beginning of the
file. If not subsequent read fails. This patch fixes this.
2012-12-04 22:49:05 +01:00
Luiz Augusto von Dentz
a103426e51 obexd: Make obc_transfer_put to accept NULL as filename
In that case contents should be valid so the modules can use
obc_transfer_put to create temporary files.
2012-12-04 22:49:05 +01:00