DragonFlyBSD Kernel Audit
DF-2229 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/libprop/prop_array.c b/sys/libprop/prop_array.c
--- a/sys/libprop/prop_array.c
+++ b/sys/libprop/prop_array.c
@@ -539,6 +539,9 @@
 {
 	prop_object_iterator_t pi;
 
+	if (! prop_object_is_array(pa))
+		return (NULL);
+
 	_PROP_RWLOCK_RDLOCK(pa->pa_rwlock);
 	pi = _prop_array_iterator_locked(pa);
 	_PROP_RWLOCK_UNLOCK(pa->pa_rwlock);
@@ -553,6 +556,9 @@
 prop_array_make_immutable(prop_array_t pa)
 {
 
+	if (! prop_object_is_array(pa))
+		return;
+
 	_PROP_RWLOCK_WRLOCK(pa->pa_rwlock);
 	if (prop_array_is_immutable(pa) == false)
 		pa->pa_flags |= PA_F_IMMUTABLE;
@@ -568,6 +574,9 @@
 {
 	bool rv;
 
+	if (! prop_object_is_array(pa))
+		return (false);
+
 	_PROP_RWLOCK_RDLOCK(pa->pa_rwlock);
 	rv = prop_array_is_immutable(pa) == false;
 	_PROP_RWLOCK_UNLOCK(pa->pa_rwlock);
@@ -745,6 +754,9 @@
 	struct _prop_object_externalize_context *ctx;
 	char *cp;
 
+	if (! prop_object_is_array(pa))
+		return (NULL);
+
 	ctx = _prop_object_externalize_context_alloc();
 	if (ctx == NULL)
 		return (NULL);