Use bounded string functions.

The bounds add a bit of safety in avoiding memory bugs and there are
sensible bounds in the cases we have been using them.

Change-Id: I381e122f356a54e5c0f1e183e521169522bc8aa9
diff --git a/src/fdt.c b/src/fdt.c
index d12faf2..752e9d8 100644
--- a/src/fdt.c
+++ b/src/fdt.c
@@ -58,6 +58,8 @@
 #define FDT_VERSION 17
 #define FDT_MAGIC 0xd00dfeed
 
+#define FDT_PROPERTY_NAME_MAX_SIZE 32
+
 #define FDT_TOKEN_ALIGNMENT sizeof(uint32_t)
 
 static void fdt_tokenizer_init(struct fdt_tokenizer *t, const char *strs,
@@ -272,7 +274,7 @@
 	fdt_tokenizer_init(&t, node->strs, node->begin, node->end);
 
 	while (fdt_next_property(&t, &prop_name, buf, size)) {
-		if (!strcmp(prop_name, name)) {
+		if (!strncmp(prop_name, name, FDT_PROPERTY_NAME_MAX_SIZE)) {
 			return true;
 		}
 	}
@@ -363,7 +365,7 @@
 	fdt_skip_properties(&t);
 
 	while (fdt_next_subnode(&t, &name)) {
-		if (!strcmp(name, child)) {
+		if (!strncmp(name, child, FDT_PROPERTY_NAME_MAX_SIZE)) {
 			node->begin = t.cur;
 			return true;
 		}