diff --git a/obexd/client/transfer.c b/obexd/client/transfer.c
index 6eec513..fdcaa46 100644
--- a/obexd/client/transfer.c
+++ b/obexd/client/transfer.c
struct session_data *session = transfer->session;
gw_obex_xfer_cb_t cb;
struct stat st;
- int fd;
+ int fd, size;
if (transfer->xfer != NULL)
return -EALREADY;
cb = put_xfer_progress;
done:
+ size = transfer->size < UINT32_MAX ? transfer->size : 0;
transfer->xfer = gw_obex_put_async(session->obex, transfer->name,
- transfer->type, transfer->size,
+ transfer->type, size,
-1, NULL);
if (transfer->xfer == NULL)
return -ENOTCONN;
diff --git a/obexd/plugins/filesystem.c b/obexd/plugins/filesystem.c
index bb758ab..b4ff556 100644
--- a/obexd/plugins/filesystem.c
+++ b/obexd/plugins/filesystem.c
#define FL_PARENT_FOLDER_ELEMENT "<parent-folder/>" EOL_CHARS
-#define FL_FILE_ELEMENT "<file name=\"%s\" size=\"%lu\"" \
+#define FL_FILE_ELEMENT "<file name=\"%s\" size=\"%" PRIu64 "\"" \
" %s accessed=\"%s\" " \
"modified=\"%s\" created=\"%s\"/>" EOL_CHARS
ret = g_strdup_printf(FL_FOLDER_ELEMENT, escaped, perm,
atime, mtime, ctime);
} else if (S_ISREG(fstat->st_mode))
- ret = g_strdup_printf(FL_FILE_ELEMENT, escaped, fstat->st_size,
- perm, atime, mtime, ctime);
+ ret = g_strdup_printf(FL_FILE_ELEMENT, escaped,
+ (uint64_t) fstat->st_size,
+ perm, atime, mtime, ctime);
g_free(escaped);
diff --git a/obexd/src/obex-priv.h b/obexd/src/obex-priv.h
index c9be1c5..0806a56 100644
--- a/obexd/src/obex-priv.h
+++ b/obexd/src/obex-priv.h
char *path;
time_t time;
uint8_t *buf;
- int32_t pending;
- int32_t offset;
- int32_t size;
+ int64_t pending;
+ int64_t offset;
+ int64_t size;
void *object;
gboolean aborted;
struct obex_service_driver *service;
diff --git a/obexd/src/obex.c b/obexd/src/obex.c
index 6d4430d..effb81e 100644
--- a/obexd/src/obex.c
+++ b/obexd/src/obex.c
/* only write if both object and driver are valid */
if (os->object == NULL || os->driver == NULL) {
- DBG("Stored %u bytes into temporary buffer", os->pending);
+ DBG("Stored %" PRIu64 " bytes into temporary buffer",
+ os->pending);
return 0;
}
if (err < 0)
goto done;
- if (os->size != OBJECT_SIZE_UNKNOWN) {
+ if (os->size != OBJECT_SIZE_UNKNOWN && os->size < UINT32_MAX) {
hd.bq4 = os->size;
OBEX_ObjectAddHeader(obex, obj,
OBEX_HDR_LENGTH, hd, 4, 0);
case OBEX_HDR_LENGTH:
os->size = hd.bq4;
- DBG("OBEX_HDR_LENGTH: %d", os->size);
+ DBG("OBEX_HDR_LENGTH: %" PRIu64, os->size);
break;
case OBEX_HDR_TIME:
os->time = parse_iso8610((const char *) hd.bs, hlen);