diff --git a/obexd/src/mimetype.c b/obexd/src/mimetype.c
index 7b96ec2..fa52e75 100644
--- a/obexd/src/mimetype.c
+++ b/obexd/src/mimetype.c
for (l = drivers; l; l = l->next) {
struct obex_mime_type_driver *driver = l->data;
- if (memcmp0(target, driver->target, TARGET_SIZE))
+ if (memncmp0(target, TARGET_SIZE, driver->target, TARGET_SIZE))
continue;
- if (memcmp0(who, driver->who, who_size))
+ if (memncmp0(who, who_size, driver->who, driver->who_size))
continue;
if (g_strcmp0(mimetype, driver->mimetype) == 0)
diff --git a/obexd/src/obex.c b/obexd/src/obex.c
index db04bfd..3aee4cb 100644
--- a/obexd/src/obex.c
+++ b/obexd/src/obex.c
OBEX_HDR_APPARAM, hd, size, 0);
}
-int memcmp0(const void *a, const void *b, size_t n)
+int memncmp0(const void *a, size_t na, const void *b, size_t nb)
{
+ if (na != nb)
+ return na - nb;
+
if (a == NULL)
return -(a != b);
if (b == NULL)
return a != b;
- return memcmp(a, b, n);
+ return memcmp(a, b, na);
}
diff --git a/obexd/src/obex.h b/obexd/src/obex.h
index 081e03b..9424b6b 100644
--- a/obexd/src/obex.h
+++ b/obexd/src/obex.h
gboolean obex_option_symlinks(void);
/* Just a thin wrapper around memcmp to deal with NULL values */
-int memcmp0(const void *a, const void *b, size_t n);
+int memncmp0(const void *a, size_t na, const void *b, size_t nb);
diff --git a/obexd/src/service.c b/obexd/src/service.c
index 1692a41..f7c5a61 100644
--- a/obexd/src/service.c
+++ b/obexd/src/service.c
struct obex_service_driver *driver = l->data;
/* who is optional, so only check for it if not NULL */
- if (who != NULL && memcmp0(who, driver->who, who_size))
+ if (who != NULL && memncmp0(who, who_size, driver->who,
+ driver->who_size))
continue;
- if (memcmp0(target, driver->target, target_size) == 0)
+ if (memncmp0(target, target_size, driver->target,
+ driver->target_size) == 0)
return driver;
}