summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGowtham Anandha Babu <gowtham.ab@samsung.com>2015-10-20 17:59:31 +0530
committerGowtham Anandha Babu <gowtham.ab@samsung.com>2015-10-20 17:59:31 +0530
commit29c14c770d4d883a84235ad6c43065272f2683e6 (patch)
tree36189fa2345a81e1755d1edd7d994170fde90695
parent22add5ca2424beb1c72a56b0cea895e54ee194c5 (diff)
downloadbluez-29c14c770d4d883a84235ad6c43065272f2683e6.tar.gz
bluez-29c14c770d4d883a84235ad6c43065272f2683e6.tar.bz2
bluez-29c14c770d4d883a84235ad6c43065272f2683e6.zip
obexd/opp: Fix OPP GET request path
The default path is /etc/bluetooth/vcard.vcf which obexd is not able to access. obexd[11654]: obexd/src/obex.c:cmd_get() session 0x64edff0 obexd[11654]: GET(0x3), (null)(0xffffffff) obexd[11654]: obexd/src/obex.c:parse_type() TYPE: text/x-vcard obexd[11654]: open(/etc/bluetooth/vcard.vcf): Operation not permitted (1) obexd[11654]: GET(0x3), NOT_FOUND(0x44) After making this path as obex root folder, it is able to succeed. obexd[12246]: obexd/src/obex.c:cmd_get() session 0x64ed830 obexd[12246]: GET(0x3), (null)(0xffffffff) obexd[12246]: obexd/src/obex.c:parse_type() TYPE: text/x-vcard obexd[12246]: obexd/src/obex.c:driver_get_headers() name=(null) type=text/x-vcard object=0x8 obexd[12246]: GET(0x3), CONTINUE(0x10) obexd[12246]: obexd/src/obex.c:send_data() name=(null) type=text/x-vcard file=0x8 size=3061 obexd[12246]: obexd/src/obex.c:driver_read() 73 read obexd[12246]: obexd/src/obex.c:send_data() name=(null) type=text/x-vcard file=0x8 size=3066 obexd[12246]: obexd/src/obex.c:driver_read() 0 read obexd[12246]: obexd/src/obex.c:transfer_complete() Git repo link: https://git.kernel.org/cgit/bluetooth/bluez.git/commit/?id=fd524d73a3a83b8e324b14c166670e0326bc3946 Change-Id: I3a3bfca7a879af3fa19ceff17d6b4b1372949438
-rw-r--r--obexd/plugins/opp.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/obexd/plugins/opp.c b/obexd/plugins/opp.c
index 5228ba82..aa0722e6 100644
--- a/obexd/plugins/opp.c
+++ b/obexd/plugins/opp.c
@@ -42,7 +42,6 @@
#include "filesystem.h"
#define VCARD_TYPE "text/x-vcard"
-#define VCARD_FILE CONFIGDIR "/vcard.vcf"
static void *opp_connect(struct obex_session *os, int *err)
{
@@ -134,6 +133,8 @@ static int opp_put(struct obex_session *os, void *user_data)
static int opp_get(struct obex_session *os, void *user_data)
{
const char *type;
+ char *folder, *path;
+ int err = 0;
if (obex_get_name(os))
return -EPERM;
@@ -143,14 +144,19 @@ static int opp_get(struct obex_session *os, void *user_data)
if (type == NULL)
return -EPERM;
+ folder = g_strdup(obex_option_root_folder());
+ path = g_build_filename(folder, "/vcard.vcf", NULL);
+
if (g_ascii_strcasecmp(type, VCARD_TYPE) == 0) {
- if (obex_get_stream_start(os, VCARD_FILE) < 0)
- return -ENOENT;
+ if (obex_get_stream_start(os, path) < 0)
+ err = -ENOENT;
} else
- return -EPERM;
+ err = -EPERM;
- return 0;
+ g_free(folder);
+ g_free(path);
+ return err;
}
static void opp_disconnect(struct obex_session *os, void *user_data)