Diff between bb30d009208f7fd69cd12c8f1c3e150c5cb11c02 and 4e199d8d39d6c181c7bca66000ab297f3c57f3bd

Changed Files

File Additions Deletions Status
obexd/src/mimetype.c +2 -2 modified
obexd/src/obex.c +5 -2 modified
obexd/src/obex.h +1 -1 modified
obexd/src/service.c +4 -2 modified

Full Patch

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
@@ -126,10 +126,10 @@ static struct obex_mime_type_driver *find_driver(const uint8_t *target,
 	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
@@ -1385,13 +1385,16 @@ int obex_aparam_write(struct obex_session *os,
 			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
@@ -64,4 +64,4 @@ const char *obex_option_root_folder(void);
 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
@@ -47,10 +47,12 @@ struct obex_service_driver *obex_service_driver_find(GSList *drivers,
 		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;
 	}