DF-2229 / fix.diff
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); |