diff --git a/obexd/plugins/ftp.c b/obexd/plugins/ftp.c
index bcd6951..ffb00ff 100644
--- a/obexd/plugins/ftp.c
+++ b/obexd/plugins/ftp.c
gchar *path;
int ret;
+ if (name == NULL)
+ return -EBADR;
+
if (obex_get_size(os) == OBJECT_SIZE_DELETE)
return 0;
diff --git a/obexd/plugins/opp.c b/obexd/plugins/opp.c
index 7637516..729c2ef 100644
--- a/obexd/plugins/opp.c
+++ b/obexd/plugins/opp.c
#endif
#include <errno.h>
+#include <string.h>
#include <openobex/obex.h>
#include <openobex/obex_const.h>
name = g_strdup(obex_get_name(os));
skip_auth:
+ if (name == NULL || strlen(name) == 0)
+ return -EBADR;
+
path = g_build_filename(folder, name, NULL);
manager_emit_transfer_started(os);
diff --git a/obexd/src/obex.c b/obexd/src/obex.c
index 71fef28..e4872c1 100644
--- a/obexd/src/obex.c
+++ b/obexd/src/obex.c
if (!os->service->chkput)
goto done;
- if (!os->name) {
- OBEX_ObjectSetRsp(obj, OBEX_RSP_BAD_REQUEST,
- OBEX_RSP_BAD_REQUEST);
- return FALSE;
- }
-
ret = os->service->chkput(os, os->service_data);
switch (ret) {
case 0:
case -EPERM:
OBEX_ObjectSetRsp(obj, OBEX_RSP_FORBIDDEN, OBEX_RSP_FORBIDDEN);
return FALSE;
+ case -EBADR:
+ OBEX_ObjectSetRsp(obj, OBEX_RSP_BAD_REQUEST,
+ OBEX_RSP_BAD_REQUEST);
+ return FALSE;
case -EAGAIN:
OBEX_SuspendRequest(obex, obj);
os->obj = obj;