device: Add checks for NULL in device_const.c functions

This change checks to ensure that device/path passed into any of the
functions in device_const.c is not NULL. Since NULL is not expected to
be passed into these functions, this change adds a die() call in case
the assumption is broken.

Change-Id: I1ad8d2bcb9d0546104c5e065af1eeff331cdf96d
Signed-off-by: Furquan Shaikh <furquan@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/40475
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
diff --git a/src/device/device_const.c b/src/device/device_const.c
index c59c5e9..2e0ccc4 100644
--- a/src/device/device_const.c
+++ b/src/device/device_const.c
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /* This file is part of the coreboot project. */
 
+#include <assert.h>
 #include <console/console.h>
 #include <device/device.h>
 #include <device/path.h>
@@ -86,6 +87,13 @@
 {
 	int equal = 0;
 
+	if (!path1 || !path2) {
+		assert(path1);
+		assert(path2);
+		/* Return 0 in case assert is considered non-fatal. */
+		return 0;
+	}
+
 	if (path1->type != path2->type)
 		return 0;
 
@@ -156,6 +164,13 @@
 	const struct bus *parent, const struct device_path *path)
 {
 	DEVTREE_CONST struct device *child;
+
+	if (!parent) {
+		assert(0);
+		/* Return NULL in case asserts are considered non-fatal. */
+		return NULL;
+	}
+
 	for (child = parent->children; child; child = child->sibling) {
 		if (path_eq(path, &child->path))
 			break;